Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

marfi

Treue Seele

Beiträge: 100

Wohnort: Schwerte

  • Private Nachricht senden

31

04.09.2016, 09:34

Vergiss mal für einen Moment die Vektoren.

Du hast deinen Bildschirm. Dort zeichnest du deine Spielefigur. Angenommen x=0 und y = 0 wäre die linke untere Ecke deines Bildschirms. Also ist die Position POS(0,0). Da die Spielfigur sich nicht bewegt, ist die Geschwindigkeit VEL(0,0).

Beim Update berechnest du POS= POS + VEL

Ergebnis ist (0,0), also bleibt die Spielefigur stehen.

Jetzt setzt du die Geschwindigkeit auf VEL(30,0). Berechnest im Update deine neue Position und deine Spielefigur springt 30 Pixel nach rechts. Das tut sie dann bei jedem Update, so das deine Spielefigur relativ schnell aus dem Bild hoppelt. Bei 30 Bildern pro sec bewegt sich dein Objekt 900 Pixel pro sec nach rechts. Weil das zu schnell ist, legt man für die Geschwindigkeit kleinere Werte fest. Und diese wird dann noch mal mit der vergangenen Zeit zwischen zwei Updates multipliziert.

Wenn du für die Geschwindigkeit der Einfachheit halber jetzt mal 0,001 für x verwendest, sollte es sichtbar nach rechts schweben.

Das gleiche gilt jetzt auch für deine Gravitation. Du brauchst keine Masse, sondern nur wieder eine Geschwindigkeit in Richtung Boden. Wahrscheinlich einen negativen y Wert. Dadurch bewegt sich dein Objekt nach unten.

Du musst die Bewegung halt stoppen, wenn der Boden erreicht ist. Entweder durch eine Kollision oder durch einen festen Wert (wenn der Boden überall die gleiche Höhe hat)

Die Masse brauchst du nur, wenn du verschiedene Objekte hast, die unterschiedlich schnell fallen sollen. Du kannst dann entweder jedem Objekt eine andere Geschwindigkeit verpassen oder halt eine andere Masse hinzuaddieren. Je größer die Masse, desto schneller die Bewegung zum Boden.

Es ist nicht wichtig, wie realistisch du berechnest, sondern wie realistisch es aussieht ;)

Mach es erstmal so einfach wie möglich, kompliziert wird es von ganz allein.

32

04.09.2016, 10:18


Die Masse brauchst du nur, wenn du verschiedene Objekte hast, die unterschiedlich schnell fallen sollen. Du kannst dann entweder jedem Objekt eine andere Geschwindigkeit verpassen oder halt eine andere Masse hinzuaddieren. Je größer die Masse, desto schneller die Bewegung zum Boden

Nur das es mal Richtig da steht: Alle Objekte fallen mit der selben Geschwindigkeit (im Vakuum) egal welche Masse Sie haben, lediglich der Luftwiderstand sorgt dafür das die Objekte unterschiedlich abgebremst werden beim fallen.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Koschi« (04.09.2016, 13:49)


  • »DerSpieleprogger« ist der Autor dieses Themas

Beiträge: 19

Beruf: Elektroniker

  • Private Nachricht senden

33

05.09.2016, 13:57

Als erstes werde ich mal ganz einfach wie es "marfi" geschrieben hat machen und zwar mit einer konstanten geschwindigkeit & einer Bemessungszeit der update-Methode.

Danach werde ich mir das mit dem x&y-Wert beim Vektor nochmals durch den Kopf gehen lassen, so wie es "Tobiking" geschrieben hat.
In weiterer Folge werde ich, wenn das Spiel langsam komplexer wird um die Vektoren nicht mehr herumkommen.
Somit ist es Wichtig das ich das weiß.

Melde mich bald mit einem Ergebnis. :)

MfG und DANKE für die gute Hilfe von euch!!

34

05.09.2016, 14:22

Also hättest du schon einmal was mit komplexen Zahlen gemacht, hättest du auch bereits mit Vektoren arbeiten müssen.
Und hättest du bereits mit Integralen gearbeitet, so sollte es kein Problem für dich sein, eine konstante Beschleunigung zweimal zu integrieren.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

35

05.09.2016, 15:42

Was dein Vektorproblem angeht, vergiss doch erst mal Physik und Spieleprogrammierung und guck dir an was ein Vektor denn am Ende genau ist. Schwer sind die Grundlagen da wirklich nicht und bei dem was du so gemacht hast solltest du da wirklich keine Probleme haben. Es gibt zum Beispiel bei Youtube ein paar Mathekanäle die mit Sicherheit auch Vektorrechnung erklären. Guck dir da doch einfach mal ein Einführungsvideo an. Einfach mal nach Vektorrechnung oder so suchen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

  • »DerSpieleprogger« ist der Autor dieses Themas

Beiträge: 19

Beruf: Elektroniker

  • Private Nachricht senden

36

06.09.2016, 13:15

Ja, ich habe bei der komplexen Rechnung mit Vektoren gerechnet.
Um genau zu sein, haben wir geometrische additionen von komplexen Widerständen durchgeführt usw.
Nur das war anders, als das was ich in meinem Spiel benötige.
Warum sollte ich eine konstante Beschleunigung integrieren?
Wenn ich eine konstante Beschleunigung benötige, dann setze ich einfach einen festen Wert und fertig.

Ich habe euch in einem recht langen Beitrag recht ausführlich erklärt, was ich über Vektoren weiß.
Ich werde mir ein paar Videos anschauen zu Vektoren.

Aber so langsam vergeht mir die Lust am Programmieren, da ich an diesen Thema ständig scheiter.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

37

06.09.2016, 13:24

Wo ist denn das Problem. Es wurde doch schon mehrfach ziemlich genau beschrieben was das Prinzip ist. Noch mal.
Du hast einen Vektor für deine Position. Zusätzlich hast du einen Vektor für deine aktuelle Bewegung. Beim Bewegungsvektor ist der X Anteil entweder 0 für keine Bewegung oder gleich der Geschwindigkeit pro Sekunde. Befindet sich der Spieler auf dem Boden ist der Y Anteil 0 da der Spieler nicht fällt oder springt. Ansonsten ist der Y Anteil gleich dem Y Anteil vom letzten Frame + einen Gravitationswert, wobei der Gravitationswert mit der Zeit seit dem letzten Frame multipliziert wird. Je nachdem wie deine Y Achse verläuft ist der Wert positiv oder negativ, eben damit die Gravitation nach unten wirkt. Soll die Spielfigur springen wird der Y Wert des Bewegungsvektors einmalig auf einen recht großen Wert gesetzt. Das Vorzeichen ist entgegengesetzt zur Gravitation. In jedem Frame wird der Bewegungsvektor mit der Zeit multipliziert und auf die Position addiert. Das ist genau das selbe Prinzip als würdest du mit X und Y als getrennten Werten arbeiten, nur eben in Vektoren verpackt. Wenn die Dinger dich überfordern dann arbeite eben mit X und Y als einzelne Werte. Dadurch dass der Gravitationswert jeden Frame addiert wird bekommst du eine Beschleunigung nach unten. Der Sprung funktioniert weil du mit einem Schlag eine große Geschwindigkeit nach oben bekommst welche dann mit jedem Frame kleiner wird da weiterhin deine Gravitation wirkt.
Das Prinzip ist wirklich nicht schwer. Vor ein paar Beiträgen hat David schon mal das selbe erklärt. Ich hatte es so verstanden als störst du dich noch an den Vektoren was ja anscheinend auch nicht der Fall ist. Kann es sein dass das Problem grad mehr in deinem Kopf ist oder hast du das ganze einfach mal versucht umzusetzen um dann zu gucken wie das Ergebnis ist?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

  • »DerSpieleprogger« ist der Autor dieses Themas

Beiträge: 19

Beruf: Elektroniker

  • Private Nachricht senden

38

08.09.2016, 13:24

Wie gesagt, was Vektoren sind ist mir klar.
Ich habe mir ein paar gute Videos angeschaut, aber das was dort gezeigt wurde wusste ich schon.

Wie du sagtest, ich habe einfach mal probiert und das Ergebnis abgewartet.
Meine erste Gravi war einfach ein Wert der ständig heruntergezählt wurde, bis eine Kollision statt gefunden hat.
Beim springen wurde einfach dieser Wert auf einen festen Wert gesetzt und ständig heruntergezählt.
Das sah aber sehr merkwürdig aus.
Danach habe ich ein wenig im Netz nach 2D Gravitationen gesucht und habe ständig gelesen, das man eine gute Gravi nur mit Vektoren erstellen könne.
Daraufhin habe ich ein Buch im Netz gefunden wo eine Gravitation recht gut erklärt wurde aber halt nicht genau genug um selbst eine zu programmieren ohne den bestehenden Code zu kopieren.

Ich kann mir das mit den Vektoren noch nicht so ganz vorstellen, wie das ablaufen soll.

Ich werde dieses Wochenende mich damit noch mal auseinander setzen und Deinen letzten Beitrag mal durcharbeiten und versuchen das so hinzubekommen.

Meld mich dann.

MfG und danke!

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

39

08.09.2016, 14:52

Danach habe ich ein wenig im Netz nach 2D Gravitationen gesucht und habe ständig gelesen, das man eine gute Gravi nur mit Vektoren erstellen könne.
Jo, das ist schonmal falsch.

40

08.09.2016, 15:12

https://de.wikipedia.org/wiki/Gleichm%C3…unigte_Bewegung

Dafür braucht man keinen einzigen Vektor, das kann man alles Skalar machen.

Werbeanzeige