Как проверить, движется ли объект - PullRequest
2 голосов
/ 23 февраля 2020

Я пытаюсь сделать что-то в единстве, И мне нужно знать, движется камера или нет.

Это сценарий:

GameObject MainCamara = GameObject.FindGameObjectWithTag("MainCamera");
NewPosition = new Vector3(player.position.x, player.position.y, -10);
positionChanging(NewPosition);
if (MainCamara.GetComponent<Rigidbody2D>() == null)
{
        CameraMoving = true;
}
if (MainCamara.GetComponent<Rigidbody2D>().velocity.magnitude > 0.01f)
{
    CameraMoving = true;
}
CameraMoving = false;

Я не получаю никаких ошибки, но все равно не работает

Ответы [ 2 ]

4 голосов
/ 23 февраля 2020

Рассмотрите возможность использования:

Camera.main.velocity

С Документация Unity

2 голосов
/ 23 февраля 2020

Вы можете сохранить вашу камеру tansform.position в Vector3 во время выполнения функции Update (). В следующий раз, когда будет запущено обновление, просто сравните положение, которое вы сохранили из предыдущего выполнения обновления, с положением вашей текущей камеры. Если они не одинаковы, это означает, что камера находится в движении. Код будет выглядеть примерно так:

Vector3 prevCamPos;

void Update() {
    bool cameraInMove = prevCamPos != MainCamera.transform.position;
    if(cameraInMove) { /* do sth */ }
    prevCamPos = MainCamera.transform.position;

    // ... some logic
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...