Jump to content
Unity Insider Forum

Objekt Rotation behält sich nicht


Mozart53

Recommended Posts

Wieso behält sich die Rotation nicht, obwohl ich sage, dass sie es soll?

 

public class MemoryCard : MonoBehaviour
{
    public int id;

    public float targetHeight = 0.7f;
    public float targetRotation = -90f;

    private void OnMouseDown()
    {
        FindObjectOfType<GameManager>().clicked(this);
    }

    private void Update()
    {
        float height = Mathf.MoveTowards(transform.position.y, targetHeight, 3 * Time.deltaTime);
        transform.position = new Vector3(transform.position.x, height, transform.position.z);

        Quaternion qtr = Quaternion.Euler(targetRotation, transform.transform.rotation.y, transform.rotation.z); //HIER
        transform.rotation = Quaternion.Lerp(transform.rotation, qtr, 10 * Time.deltaTime);
    }
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich gehe davon aus, dass es an der ständigen Umrechnung von Quaternion (was ein Vector4 ist) zu Euler (was ein Vector3 ist) und umgekehrt liegt.
Da wird es immer leichte Ungenauigkeiten geben.

Warum machst du es nicht so wie mit der Position?
Du willst doch scheinbar nur um die X Achse lerpen, es soll also zur -90 hin gehen.

Nimm dir also einmalig die Ausgangsrotation deines Objektes, z.B. in der Start(), und speichere sie in einer Vector3 Variable ab.

Jetzt lerpst du nur den x Wert dieses Vector3 und übergibst ihn dann wieder der Variable. Diesen nutzt du dann für dein Objekt.

Also so etwa:

Vector3 myEulers; // hier speichere ich die Grundausrichtung rein
float targetRotation= -90f;
void Start(){
  myEulers= transform.localEulerAngle; // hier hole ich mir die Grundausrichtung vom transform. Aber die lokalen Werte, falls es ein Kindobjekt ist
}
void Update(){
  myEulers.x=Mathf.Lerp(myEulers.x, targetRotation, 10*Time.DeltaTime); // nur das x vom Vector3 wird gelerpt.
  transform.localEulerAngles= myEulers; // jetzt alles dem transform übergeben
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...