Unity - Как определить, будет ли функция перевода выводить объект за определенные границы? - PullRequest
0 голосов
/ 18 марта 2019

Хорошо, я использую джойстик, чтобы переместить мою камеру в Unity следующим образом:

moveVector = (transform.right * joystick.Horizontal + transform.forward * joystick.Vertical);

transform.Translate(moveVector * speed * Time.deltaTime, Space.World);

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

print(GameObject.FindObjectOfType<PlayerController>().room.bounds.Contains(moveVector));

Как я могу определить, переместит ли перевод камеру за границы, и если это правда, не делать ли перевод с вектором перемещения?

1 Ответ

0 голосов
/ 18 марта 2019

Проблема в том, что вы используете смещение камеры (moveVector), чтобы определить, находится ли камера в ограничительной рамке.Вместо этого вы должны использовать положение камеры

gameObject.transform.Position 

или будущее положение камеры

gameObject.transform.position + moveVector

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

GameObject.FindObjectOfType<PlayerController>().room.bounds.Contains(camera.transform.position + moveVector)

Убедитесь, что ваша переменная 'room' имеет тип Collider в скрипте 'PlayerController',

 var room = GetComponent<Collider>();
...