Переключение камеры Unity3D по триггеру

Я был бы очень признателен за помощь в настройке переключения камер в моей игре. Суть в том, что игра начинается, игрок видит мяч (это своего рода базовая игра с перекатыванием мяча), начинает двигаться вверх, и ему нужно снова подняться, но в другом направлении, поэтому мне нужно, чтобы камера была такой, они видят, что они делают. Я правильно расставил камеры, но не могу понять, как написать скрипт, чтобы он работал правильно. У меня это работало один раз, но я что-то напутал и не могу заставить его работать снова.

Это код, который я собрал из своих поисков:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraSwitch : MonoBehaviour
{
    public Camera front_camera;//assign your main camera here
    public Camera back_camera;//assign your top camera here

    void Start()
    {
        front_camera.enabled = true;
        back_camera.enabled = false;
    }
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.name == "Pickup")
        {
            front_camera.enabled = false;
            back_camera.enabled = true;
        }
        else if (other.gameObject.name == "Ground")
        {
            front_camera.enabled = true;
            back_camera.enabled = false;
        }
    }
}

person Community    schedule 21.11.2017    source источник
comment
Я не могу понять, как написать скрипт, чтобы он работал корректно. Как это работает сейчас?   -  person Umair M    schedule 21.11.2017
comment
Вы уверены, что все условия обнаружения столкновений соблюдены? (Твердое тело как минимум на одном объекте, коллайдеры на обоих, один коллайдер с отмеченным isTrigger и скрипт на нужном коллайдере)   -  person Hellium    schedule 21.11.2017
comment
обе камеры имеют тег maincamera?   -  person Tobias Theel    schedule 21.11.2017
comment
@umairM не работает   -  person    schedule 21.11.2017
comment
@Hellium Да, я сделал их все. Небольшой объект для захвата, который мяч должен поднять / столкнуться с ним, чтобы вызвать переключатель камеры, но он этого не делает.   -  person    schedule 21.11.2017
comment
Я бы предложил использовать сравнение тегов вместо имен.   -  person Umair M    schedule 21.11.2017
comment
Попробуйте использовать Debug.Log("<your text>"), чтобы посмотреть, что происходит.   -  person obywan    schedule 21.11.2017
comment
Используя Debug.Log(‹ваш текст›) я узнал, что этот кусок кода: void OnTriggerEnter(Collider other) { if (other.gameObject.name == Pickup) { front_camera.enabled = false; back_camera.enabled = истина; запускается с самого начала, и при столкновении с Пикапом ничего не срабатывает.   -  person    schedule 21.11.2017
comment
убедитесь, что ваш скрипт не отключается.   -  person Muhammad Faizan Khan    schedule 21.11.2017
comment
@MohammadFaizanKhan, как мне это сделать? спасибо   -  person    schedule 21.11.2017


Ответы (2)


Похоже, ваш скрипт отключает (возможно, его подключение к камере), поэтому у вас возникает проблема. Убедитесь, что CameraSwitch не отключается, иначе проблем с кодом не будет.

В качестве альтернативы вы можете прикрепить скрипт переключения камеры к шару и разместить два коллайдера, которые охватывают переднюю и заднюю области камеры соответственно. что-то вроде этого. введите здесь описание изображения

person Muhammad Faizan Khan    schedule 22.11.2017

Я попробовал код из Руководства по сценариям Unity, и он отлично работает.

Ознакомьтесь с этим Справочником по скриптам Camera.main.

person Monster Brain    schedule 22.11.2017
comment
Я хочу, чтобы переключение камеры срабатывало при столкновении, а не при нажатии кнопки, и это вызывает ее. Спасибо! - person ; 22.11.2017