2017-01-02 3 views
1

Ich möchte mein Objekt in zufällige Richtung wählen, drehen Sie es und dann folgen Sie ihm für eine Weile. Danach wiederholen Sie alles noch einmal. Hier ist mein Code für die Richtung der WahlMeine Drehung ist seltsam

private void ChooseDirection() { 
    // create a random angle from 0.0 to 360.0, Remap is a simple function for it 
    float angle = Utils.Remap (Random.value, 0.0f, 1.0f, 0.0f, 360.0f); 
    transform.Rotate (Vector3.up, angle); 
    print (angle + " : " + transform.rotation.eulerAngles.y); 

} 

Der obige Code erzeugt die folgende Ausgabe an die Konsole

38.12973 : 38.12972 

283.771 : 321.9007 

295.227 : 257.1267 

142.9637 : 40.09043 

178.7077 : 218.7981 

126.3595 : 345.1576 

347.749 : 332.9065 

250.1977 : 223.1042 

243.5038 : 106.608 

252.1878 : 358.7958 

20.00817 : 18.804 

Wie Sie die aktuelle Drehwinkel sehen kann, ist nicht der zufällig gewählten Winkel. Als Ergebnis sieht mein Objekt nicht in die Richtung, in die es sich bewegt.

+0

Sie legen die Rotation nicht fest. Du drehst dich. (d. h. Hinzufügen der ausgewählten Drehung zur vorhandenen Drehung der Umwandlung.) – Abion47

+0

Ich habe meinen Code geändert, jetzt stimmen die Winkel überein. Ich habe immer noch das Problem, dass das Objekt in die falsche Richtung zeigt. Ich werde versuchen, Winkel auf bekannte Werte wie 0, 10, 45, 90 ... einzustellen und zu sehen, wie es sich bewegt – sasha199568

+0

Ich habe mein Problem gefunden. In der 'Translate' Funktion habe ich' transform.forward' verwendet. Ich hätte 'Vector3.forward' verwenden sollen. Mein Problem, du könntest mein Problem nicht gelöst haben, weil ich meinen Moving Code nicht gepostet habe – sasha199568

Antwort

3

Sie drehen gerade das Objekt, ohne seine Rotation einzustellen. Anstelle von transform.Rotate(...) sollten Sie Folgendes verwenden:

transform.rotation = Quaternion.Euler(0, 0, angle);