Ultimotick Posted September 5 Report Share Posted September 5 Ich arbeite an einen multiplayer fps game. Ich benutze joints um angenehme Kamera bewegung(das ist der teil der den Fehler verursacht) und weopon sway zu erzeugen! Sobald ich aber beim schießen mein recoil script ausführe entscheidet sich die Kamera den Boden zu küssen und einen wilden Break dance auszuführen. Fehlermeldungen: transform.localRotation assign attempt for 'Recoil' is not valid. Input rotation is { NaN, NaN, NaN, NaN }. UnityEngine.Transform:set_localRotation (UnityEngine.Quaternion) Assertion failed on expression: 'CompareApproximately(SqrMagnitude(result), 1.0F)' UnityEngine.Quaternion:Euler (UnityEngine.Vector3) private Vector3 currentRotation; private Vector3 targetRotation; public float recoilX; public float recoilY; public float recoilZ; public float snappiness; public float returnSpeed; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { targetRotation += Vector3.Lerp(targetRotation, Vector3.zero, returnSpeed * Time.deltaTime); currentRotation = Vector3.Slerp(currentRotation,targetRotation, snappiness * Time.fixedDeltaTime); transform.localRotation = Quaternion.Euler(currentRotation); } public void RecoilFire() { targetRotation += new Vector3(recoilX, Random.Range(-recoilY, recoilY), Random.Range(-recoilZ, recoilZ)); } 2023-09-05_17-25-34.mkv Quote Link to comment Share on other sites More sharing options...
Ultimotick Posted September 5 Author Report Share Posted September 5 Danke im Voraus ich verzweifle schon seit 3 stunden an diesem Fehler(Vermutlich von mir) Quote Link to comment Share on other sites More sharing options...
Sascha Posted September 5 Report Share Posted September 5 Moin! Diese Zeile ergibt schon einmal nicht so viel Sinn: targetRotation += Vector3.Lerp(targetRotation, Vector3.zero, returnSpeed * Time.deltaTime); Du addierst da das Lerp-Ergebnis auf den Vektor obendrauf. Wenn returnSpeed * Time.deltaTime nicht gerade >= 1 ist, sodass sich targetRotation dadurch gar nicht ändert, dann wird dieser Vektor mit jedem Frame immer größer. Und zwar exponentiell. Ich nehme stark an, dass du da recht schnell irgendwelche float-Limits überschreitest, was dann zu den NaN-Werten führt. Und so nebenbei: Die Verwendung von Time.fixedDeltaTime kann hier auch keine sinnvollen Ergebnisse produzieren. Das ist einfach ne Konstante 0.02, sofern du das nicht anderweitig eingestellt hast. Quote Link to comment Share on other sites More sharing options...
Ultimotick Posted September 6 Author Report Share Posted September 6 ah ich sehe das + gehört da nicht hin! Dummheit tut weh😐! Wenn ich fixed delta Time benutze müsste es also in fixed Update sein? Danke! Quote Link to comment Share on other sites More sharing options...
Sascha Posted September 6 Report Share Posted September 6 vor 3 Stunden schrieb Ultimotick: Wenn ich fixed delta Time benutze müsste es also in fixed Update sein? Danke! Das ist richtig, aber: Time.deltaTime gibt, wenn du es in FixedUpdate benutzt, denselben Wert zurück wie Time.fixedDeltaTime. Es ist daher schön simpel, einfach überall immer Time.deltaTime zu benutzen. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.