Почему мой скрипт контроллера камеры C # для Unity переключается только между двумя камерами, а не обратно? - PullRequest
0 голосов
/ 25 октября 2018

Камера работает только между двумя камерами и не переключается обратно на разные камеры, как положено.Наверное, делаю что-то глупое, потому что я новичок в этом.Очень признателен за помощь.

using UnityEngine;

public class CameraController : MonoBehaviour
{

Это основная камера в сцене.

public Camera MainCamera;

Это другие камеры в сцене.

public Camera FrontCamera;
public Camera LeftCamera;
public Camera RightCamera;
public Camera BackCamera;

Функции

void Start()
{

MainCamera = Camera.main;

MainCamera.enabled = true;

FrontCamera.enabled = false;
LeftCamera.enabled = false;
RightCamera.enabled = false;
BackCamera.enabled = false;
}

void Update()
{

if (Input.GetKeyDown(KeyCode.Space))

    if (MainCamera.enabled)
    {
        FrontCamera.enabled = true;
        MainCamera.enabled = false;
        LeftCamera.enabled = false;
        RightCamera.enabled = false;
        BackCamera.enabled = false;

    }

else if (Input.GetKeyDown(KeyCode.Space))

    if (FrontCamera.enabled)
    {

        LeftCamera.enabled = true;
        FrontCamera.enabled = false;
    }

Код работает, как и ожидалось до этого момента.

else if (Input.GetKeyDown(KeyCode.Space))
    { 
        if (LeftCamera.enabled)
        {

            RightCamera.enabled = true;
            LeftCamera.enabled = false;
        }
    }
else if (Input.GetKeyDown(KeyCode.Space))
    { 
        if (RightCamera.enabled)
        {
            BackCamera.enabled = true;
            RightCamera.enabled = false;
        }
    }
else if (Input.GetKeyDown(KeyCode.Space))
    {
        if (BackCamera.enabled)
        {
            MainCamera.enabled = true;
            RightCamera.enabled = false;
        }
    }
else if (Input.GetKeyDown(KeyCode.Space))

        if (!MainCamera.enabled) ;
{
        MainCamera.enabled = true;
}
}

}

1 Ответ

0 голосов
/ 25 октября 2018

Вы вкладки и скобки сбивают с толку.Кроме того, структура вашего вложенного if, если else-if else-ifs сбивает с толку.Ваше последнее утверждение в основном пустое:

else if (Input.GetKeyDown(KeyCode.Space))

    if (!MainCamera.enabled) ;
{
    MainCamera.enabled = true;
}

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

If (Input.GetKeyDown(KeyCode.Space))
{
    switch (CAMERA_STATE)
    {
        case MAIN:
            MainCamera.enabled = false;
            FrontCamera.enabled = true;
            break;
        case FRONT:
            FrontCamera.enabled = false;
            LeftCamera.enabled = true;
            break;
        case LEFT:
            LeftCamera.enabled = false;
            RightCamera.enabled = true;
            break;
        case RIGHT:
            RightCamera.enabled = false;
            BackCamera.enabled = true;
            break;
        case BACK:
            BackCamera.enabled = false;
            MainCamera.enabled = true;
            break;
        default:
            break;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...