Unity Insider Forum

# Objekt Rotation behält sich nicht

## 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);
}
}```

##### Share on other sites

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
}```

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account. ×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.