Domanda

Ho imparato Unity 3D, lentamente. Sto cercando di fare un labirinto, e hanno bisogno di un evento si verifichi quando raggiungono la zona di arrivo.

Come prelevo posizione oggetto e verificare se è nella zona di destinazione? Utilizzando Javascript.

Grazie per qualsiasi aiuto!

È stato utile?

Soluzione

Se la vostra zona finale può essere trattata come una scatola, si potrebbe aggiungere un BoxCollider alla scena intorno alla zona d'arrivo e impostare la proprietà isTrigger su true. Poi si otterrà un callback per OnTriggerEnter sul soggetto quando si entra nella zona, che è possibile utilizzare in seguito per terminare il livello o qualsiasi altra cosa.

Altri suggerimenti

membri sulle risposte Unity :

  

Se si dispone di un corpo rigido, allora si può fare Rigidbody.IsSleeping () per   controllare se il vostro corpo rigido sta dormendo

     

Se si utilizza un controller di carattere, quindi il controllo per vedere se   CharacterController.velocity == Vector3.zero;

     

In alternativa, è possibile salvare manualmente una Vector3 ogni fotogramma che ricorda il   ultima posizione. Qualcosa di simile:

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

bene se per area di destinazione si intende la zona d'arrivo poi è possibile farlo in diversi modi

è possibile utilizzare scontra

in modo semplice: (1) creare un piano, creare un tag denominato "finitura" (2) quindi selezionare il giocatore quindi fare clic sul "tag" menu a discesa nella finestra di ispezione. la ricerca di "finitura" e selezionarlo. si dovrà anche aggiungere un collisore al vostro gameobject.

quindi creare un nuovo JavaScript e aggiungere questo codice ad esso

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

//"STOP GAMEOBJECT FROM MOVING"
}

}

o utilizzare questo metodo

mettere questo script sul vostro lettore. questo script è probabilmente solo come dio come utilizzare acceleratori per quello che state facendo

 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 

    }

    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top