Frage

Ich habe Unity 3D gelernt, langsam. Ich versuche, ein Labyrinth zu machen, und ein Ereignis müssen auftreten, wenn sie den Zielbereich erreichen.

Wie hole mir Objektlokalisierung und prüfen, ob es im Zielbereich ist? Mit Javascript.

Vielen Dank für jede Hilfe!

War es hilfreich?

Lösung

Wenn Ihr Endbereich als Box behandelt werden kann, können Sie eine BoxCollider in der Szene rund um den Zielbereich hinzufügen und deren isTrigger Eigenschaft auf true. Dann werden Sie einen Rückruf an OnTriggerEnter auf Ihrem Unternehmen erhalten, wenn sie den Bereich betreten, die Sie anschließend die Ebene verwenden können, um zu beenden oder was auch immer.

Andere Tipps

Wie Peter G Staaten auf Unity Antworten :

Wenn Sie einen Starrkörper haben, dann können Sie tun Rigidbody.IsSleeping (), um überprüfen, ob Ihr Starrkörper schläft

Wenn Sie einen Character-Controller verwenden, überprüft dann, ob CharacterController.velocity == Vector3.zero;

Alternativ können Sie manuell eine Vector3 speichern jeden Rahmen, der erinnert sich letzte Position. So etwas wie:

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

gut, wenn Sie mit dem Zielbereich bedeuten Sie den Zielbereich dann Sie können dies tun, in mehrfacher Hinsicht

Sie kollidiert mit

auf einfache Art und Weise: (1) schafft eine Ebene, erstellen Sie einen Tag mit dem Namen „finish“ (2) und wählen Sie dann die Spieler dann das Drop-down „tag“ klicken Sie im Inspektor. Suche nach „Finish“ und wählen sie aus. Sie werden auch eine Collider zu Ihrem Gameobject hinzufügen müssen.

Sie dann ein neues JavaScript erstellen und fügen Sie diesen Code, um es

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

//"STOP GAMEOBJECT FROM MOVING"
}

}

oder diese Methode verwenden,

Stellen Sie das Skript auf Ihrem Player. Dieses Skript ist wahrscheinlich genauso Gott wie mit Beschleunigern für das, was Sie tun,

 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 

    }

    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top