Ich bin neu in Unity und Starrkörper, und ich dachte, ich würde lernen, indem ich versuche, ein 3D Tron Light-Cycle-Spiel zu machen.Einheit - Mit einem Starrkörper für Motorrad - wie drehe ich mich?
I verwendet, auf dem langgestreckten Bereich einen starren Körper, und verwendet, um den folgenden Code:: Ich habe meine Spieler Fahrzeug eine Kombination von Zylindern, Kugeln und Rechtecke verwendet wird, unten gesehen
public float accel = 1.0f;
// Use this for initialization
void Start() {
cycleSphere = GetComponent<Rigidbody>();
}
void FixedUpdate() {
cycleSphere.velocity = Vector3.forward * accel;
}
Das bewegt das Fahrzeug vorwärts. Ich bin mir nicht sicher, ob es einen besseren Weg gibt, dies zu tun, aber wenn es so ist, sag es bitte.
Ich habe die Hauptkamera an das Fahrzeug angeschlossen, und X-Drehung deaktiviert, um zu verhindern, dass es und die Kamera rollen.
Jetzt möchte ich es durch Drücken der Tasten A und D drehen. Im Gegensatz zu der 90-Grad-Drehung der ursprünglichen Tron-Lichtzyklen wollte ich, dass sie sich wie ein normales Fahrzeug dreht.
So habe ich versucht, dies:
void Update() {
if (Input.GetKey (KeyCode.A)) {
turning = true;
turnAnglePerFixedUpdate -= turnRateAngle;
} else if (Input.GetKey (KeyCode.D)) {
turning = true;
turnAnglePerFixedUpdate += turnRateAngle;
} else {
turning = false;
}
}
void FixedUpdate() {
float mag = cycleSphere.velocity.magnitude;
if (!turning) {
Quaternion quat = Quaternion.AngleAxis (turnAnglePerFixedUpdate, transform.up);// * transform.rotation;
cycleSphere.MoveRotation (quat);
}
cycleSphere.velocity = Vector3.forward * accel;
}
Während der obige Code das Fahrzeug dreht, bewegt er sich immer noch in der letzten Richtung es war - es eher wie ein Panzerturm verhält. Schlimmer noch, wenn man entweder A oder D zu sehr drückt, würde es sich in die gewünschte Richtung drehen und nach einer kurzen Weile verrückt werden, sich in diese Richtung drehen und die Kamera mitnehmen.
Was habe ich falsch gemacht, und wie kann ich es beheben?
Hmm, interessant. Ich habe seitdem einige Änderungen an meinem Code vorgenommen, und ich habe es funktioniert, aber ich habe Ihren Ratschlag übernommen und den getKey auf Input gesetzt. Wie dreht sich dieser Code? –
Dieser Code bezieht sich auf den Wert, der von 'Input.GetAxis (" horizontal ")" abgerufen wird, das mit dem '2 * forwardForce" kombiniert wird. Das bedeutet, dass es weitergehen wird, aber wenn es einen horizontalen Eingang gibt, verändert es die Kraft (macht es etwas gekrümmt). –