[GER] WesternCity Bullet Physics…

Manchmal ist ein Copy-Paste diverser Codeparts eine angenehme Arbeitserleichterung – gerade wenn man das Thema verstanden hat und etwas zu Faul zum selber tippen ist.
Neulich habe ich doch tatsächlich vier Zeilen Code aus einem Beitrag kopiert.
Im Grunde ging es darum, eine Kugel aus einer Pistole zu schießen und fliegen zu lassen. Die Richtung wäre ja dann folgerichtig die, in der der Lauf der Pistole zeigt.

Nun, statt wie gewohnt einfach mal über die (bereits bekannte) Rigidbody Physic in Unity kurz nachzudenken, habe ich einfach die vier Zeilen aus irgendeinem Beitrag kopiert….ein Fehler….

Ich tippte den gewünschten Suchbegriff bei google ein und kopiere die Zeilen, die wohl augenscheinlich das Problem zu lösen zu scheinten.
Statt es zu lösen, verursachte dieser Code einen nicht gewünschten Effekt bei der Flugrichtung der Kugel, aber seht selbst:

Der Code:

Die, die nicht das Video anschauen möchten: Die Kugel fliegt in irgendwelche Richtungen, nur nicht die gewünschte. Ich habe ein paar Stunden damit verbracht, verschiedene Berechnungen durchführen zu lassen, so dass die Flugrichtung korrekt verläuft. Unter anderem wollte ich die Rotation des Spielers aus der Kugel zu entfernen, aber auch dass brachte nicht den gewünschten Erfolg – die Flugrichtung änderte sich zwar, jedoch weiterhin nicht wie gewünscht.

Das Problem hierbei ist, dass wir hier direkt die Geschwindigkeit des Rigidbody verändert – was in den meisten Fällen wenig Sinn macht. Es ist nicht korrekt, weil dann die Kugel mit einer kalkulierten Geschwindigkeit einfach irgendeine Flugrichtung bekommt, ohne die gewünschte Richtung einzuhalten. Sinnvoll ist eine direkte Änderung der Geschwindigkeit zum Beispiel dann, wenn man möchte das eine Änderung in der Bewegung DIREKT eintritt, wie z.B. ein Sprung des Spielers. Oder wenn man möchte, dass eine Kugel die um die Ecke fliegen kann!

Wie auch immer, in diesem Fall war es ein Fehler. Was getan werden musste, war eine Kraft auf die Kugel anzuwenden, welche der berechneten Blickrichtung des Spieler bzw. der Waffe entspricht – damit wird dann alles gut. (Normalisiert und aus der Mitte des Bildschirms).

Der korrigierte Code sieht dann so aus:

Hier das Video dazu. Hinweis, die Kugeln werden mit Absicht langsam abgeschossen, damit man die korrekte Schussrichtung der Kugel beobachten kann:

Also, bevor ich demnächst wieder Blind irgendein Code kopiere, verlasse ich mich auf mein (eigentlich) vorhandenes Wissen über Physics 😉

 

Ohne weitere Kommentare hier der Codeschnipsel des Shuss-Command:

 



Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.