Определение объекта Расположение в Unity 3D

StackOverflow https://stackoverflow.com/questions/2717749

  •  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 

    }

    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top