Определение объекта Расположение в Unity 3D
-
01-10-2019 - |
Вопрос
Я изучаю Unity 3D, медленно. Я пытаюсь сделать лабиринт и нужно событие, когда они достигают финишной зоны.
Как извлечь объект объекта и проверьте, если он находится в целевой области? Используя JavaScript.
Спасибо за любую помощь!
Решение
Если ваша конечная зона может быть обработана в виде коробки, вы можете добавить BoxCollider на свою сцену вокруг финишной области и установить его isTrigger
Имущество правда. Тогда вы получите обратный вызов OnTriggerEnter
На вашей организации, когда он входит в область, которую вы можете впоследствии использовать, чтобы закончить уровень или что-то еще.
Другие советы
Как Питер Г. Штаты на ответы единства:
Если у вас есть жесткий, то вы можете сделать жестко.
Если вы используете контроллер символов, то проверяйте, если символController.Velocity == Vector3.zero;
Или вы можете вручную сохранить вектор3 каждый кадр, который помнит последнюю позицию. Что-то типа:
function Update () {
curPos = position;
if(curPos == lastPos) {
print("Not moving");
}
lastPos = curPos;
}
хорошо, если вы по целевой области, вы имеете в виду финишную область, вы можете сделать это несколькими способами
Вы можете использовать Collides
Простым способом: (1) Создайте самолет, создайте тег с именем «Готово» (2), затем выберите плеера, затем щелкните раскрывающийся момент «тег» в инспекторе. Ищите «Готово» и выберите его. Вам также нужно будет добавить коллайдер на ваш GameObject.
Затем создайте новый JavaScript и добавьте этот код к нему
function OnCollisionEnter(collision : Collision){
if(collision.gameObject.tag == "finish"){
//"STOP GAMEOBJECT FROM MOVING"
}
}
или использовать этот метод
Поместите этот скрипт на свой игрок. Этот скрипт, вероятно, просто как Бог, как и использование колладистов для того, что вы делаете
var other : Transform;
function Update ()
{
var dist = Vector3.Distance(other.position, transform.position);
if (dist < 100)
{
//stop player movent here
// move player to exact finish position over time
}
}