Garzec Geschrieben 27. August 2018 Melden Share Geschrieben 27. August 2018 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 More sharing options...
malzbie Geschrieben 27. August 2018 Melden Share Geschrieben 27. August 2018 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 More sharing options...
Garzec Geschrieben 27. August 2018 Autor Melden Share Geschrieben 27. August 2018 Dankeschön funktioniert wunderbar Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.