Ich habe ein Spiel mit Google Cardboard. Ich sitze im Cockpit und kann mich ohne Probleme umsehen.Tilt GameObject von Seite zu Seite
Jetzt möchte ich mein Cockpit von Seite zu Seite neigen, um ein realistischeres Gefühl zu geben, anstatt nur stationär zu sein.
Bisher habe ich dies:
using UnityEngine;
using System.Collections;
public class Tilt : MonoBehaviour
{
float speed = 0.25f;
void Update()
{
Tilter();
}
void Tilter()
{
if (transform.rotation.z < 5f) {
transform.Rotate (new Vector3 (0f, 0f, speed));
}
if (transform.rotation.z > 5f)
transform.Rotate (new Vector3 (0f, 0f, -speed));
}
}
Das beginnt das Cockpit zu der wie erwartet links kippen, aber sobald die Rotation größer ist als der Wert von 5 wird, wird das Cockpit nicht in die andere Richtung drehen, es dreht sich auf die gleiche Weise, anstatt in die entgegengesetzte Richtung.
Ein logisches Problem, das Sie in Ihrem Code haben, ist, dass selbst wenn es fehlerfrei funktioniert, Ihre Rotation bei z = 5 gesperrt wird. In dem Moment, in dem es 5 überholt, wird es auf 5 zurückgehen ... und wenn es etwas darunter ist, wird es wieder auf und über 5 gehen. Dieses wird um 5 ad infinitum oszillieren, im Grunde eine Schwingung (abhängig von der Geschwindigkeit)). Ist das deine Absicht? – Serlite
@Tom das war eine gute Frage. Warum hast du es gelöscht? Ist das Problem gelöst? – Programmer
@Programmer Ich tippte das für etwa 15 Minuten, bevor ich merkte, dass ich das falsche Ding im Inspektor zugewiesen hatte -.- Nur ein dummer Fehler! Du meinst, ich hätte es verlassen und einfach meine peinliche Antwort reinlegen sollen? : ') – Tom