Jump to content
Unity Insider Forum

vertikale Rotation bei Kamera limitieren


Garzec

Recommended Posts

Hallo,

ich möchte eine FPS Kamera basteln und ihre vertikale Rotation auf -80 bis 80 Grad beschränken. Ein kurzes unsauberes Beispiel:

    public Transform player;
    private Vector2 rotation;

    private void Update()
    {
        rotation.x = Input.GetAxisRaw("Mouse X") * 5;
        rotation.y = Mathf.Clamp(Input.GetAxisRaw("Mouse Y") * 5, -80, 80);
    }

    private void LateUpdate()
    {
        transform.localRotation *= Quaternion.AngleAxis(-rotation.y, Vector3.right);
        player.localRotation *= Quaternion.AngleAxis(rotation.x, player.up);
    }

Der Code funktioniert zwar, aber die Limitierung nicht. Das hängt wahrscheinlich damit zusammen, dass der Input nur zwischen -1 und 1 springt und erstmal nicht bis 80 Grad kommen wird. Aber wo muss ich mit der Limitierung nun ansetzen? 🤔

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du musst erst deine Mausdaten der Y Achse hinzufügen und danach das Ganze einklemmen.
Außedem brauchst du eine Startrotation, auf die sich dann der eingeklemmte Winkel bezieht.

 

Quaternion originalRotation;
Quaternion yQuaternion;
float yRotation=0f;
public float yMin=-80f;
public float yMax=80f;
public float ySensitivity=5f;
void Start(){
  originalRotation=transform.localRotation;
}
void Update(){
  yRotation += Input.GetAxis("Mouse Y") * ySensitivity;
  yRotation = Mathf.Clamp (yRotation,yMin,yMax);
  yQuaternion = Quaternion.AngleAxis(yRotation,Vector3.left);
  transform.localRotation = originalRotation * yQuaternion;
}


 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...