Question

J'ai appris Unity 3D, lentement. Je suis en train de faire un labyrinthe, et ont besoin d'un événement de se produire quand ils atteignent la zone d'arrivée.

Comment récupérer l'emplacement de l'objet et vérifier si elle est dans la zone cible? L'utilisation de JavaScript.

Merci pour toute aide!

Était-ce utile?

La solution

Si votre zone d'extrémité peut être traitée comme une boîte, vous pouvez ajouter un BoxCollider à votre scène autour de la zone d'arrivée et définissez sa propriété isTrigger true. Ensuite, vous aurez un rappel à OnTriggerEnter sur votre entité lorsqu'elle pénètre dans la zone, que vous pouvez ensuite utiliser pour mettre fin à niveau ou autre.

Autres conseils

Peter G états sur les réponses Unity :

  

Si vous avez un modèle du solide indéformable, alors vous pouvez le faire Rigidbody.IsSleeping () à   vérifier si votre dort modèle du solide indéformable

     

Si vous utilisez un contrôleur de caractères, puis de vérifier pour voir si   CharacterController.velocity == Vector3.zero;

     

Ou, vous pouvez enregistrer manuellement un Vector3 chaque image qui se souvient de la   dernière position. Quelque chose comme:

function Update () {
 curPos = position;
 if(curPos == lastPos) {
     print("Not moving");
 }
 lastPos = curPos;
}

bien si vous par zone cible que vous voulez dire la zone d'arrivée puis vous pouvez le faire de plusieurs façons

vous pouvez utiliser entre en collision

d'une manière simple: (1) créer un plan, créez une balise nommée « finish » (2), puis sélectionnez le lecteur puis cliquez sur le « tag » déroulant dans l'inspecteur. recherche de « finition » et sélectionnez. vous aurez également besoin d'ajouter un collisionneur à votre gameobject.

puis créez un nouveau JavaScript et ajoutez ce code à lui

    function OnCollisionEnter(collision : Collision){
    if(collision.gameObject.tag == "finish"){ 

//"STOP GAMEOBJECT FROM MOVING"
}

}

ou utiliser cette méthode

placer ce script sur votre lecteur. ce script est probablement tout aussi dieu que l'utilisation collisionneurs pour ce que vous faites

 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 

    }

    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top