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

Gimp

Frischling

  • »Gimp« ist der Autor dieses Themas
  • Private Nachricht senden

1

22.01.2010, 23:50

Oberflächenerkennung Bewegung

Hallo,

ich habe ein paar Probleme bei der Programmierung eines Spiel. Es handlet sich im wesentlich um ein kleines Spiel mit Bällen und anderen Objekten die sich durch Kollision und Bewegung in ein Ziel Objekt bringen lassen.

Das Spiel funktioniert im Prinzip schon, jedoch habe ich einige Ausnahmefälle bei denen ich nicht weiterkomme.

Aufgebaut ist alles wie folgt.
Ich habe eine Funktion, die die Bewegung steuert und die Kollisionserkennung aufruft. Wenn es eine Kollision gibt wird der neue Vektor errechnet
Habe es eben nach diesem System probiert.
http://game-physics-engine.foren-city.de/topic,11,-kollisionen-mit-belieb-orient-flaechen.html
Vorher habe ich einfach zu meiner Oberfläche ein Lot gebildet und daran den Vektor gespiegelt. Leider gibt es bei einem Fall ein problem unzwar hier:
http://img716.imageshack.us/img716/8836/ballproblem.png
Der Vektor zeigt in den Balken hinein, und da er sich nicht dort hin bewegen kann, bleibt er stecken.
Meine Oberflächenerkennung arbeitet in diesem Fall nicht gut genug, mir fällt nur keine bessere Möglichkeit ein die Erkennung so allgemein wie möglich zu halten. Hat jemand eine Idee/Verbesserung?

EDIT: Was noch wichtig zu erwähnen ist, unzwar ist mein Objekt als Matrix gespeichert. Ein Punkt des Objektes ist dabei als 1 in der Quadratischen Matrix gespeichert. Wobei der Hintergrund als 0 gespeichert wird.



2. Hätte ich noch ein Problem ( was jedoch im Hintergrund steht ). Unzwar rollt mein Ball nicht wirklich. Er hüpft den Balken hinunter. Wie könnte man es machen, dass er runter rollt?
Momentan ist die Bewegung mir wie folgt aufgebaut, Bewegungsvektor = [3 2]
Er nimmt sich den höchsten wert (hier 3) und teil dann die Bewegung in Schritte ein
[3 2]/3*schritt = [1 2/3] = [2 4/3] = [3 2]
dann geht er von links nach rechts, solange bis es eine Kollision gibt.

Das ist natürlich nicht realistisch und eignet sich schon gar nicht für Rollbewegung. Wie löse ich das Problem



Ich hoffe ich konnte alles etwas verständlich machen

Grüße Gimper
Danke im voraus

Gimp

Frischling

  • »Gimp« ist der Autor dieses Themas
  • Private Nachricht senden

2

24.01.2010, 19:18

Hallo nochmal,..

also ich habe das Problem mit der Oberflächenerkennung weitesgehend hinbekommen.

Nun würde ich natürlich auch noch gerne das Rollen einfügen. Wüsste jedoch nicht, wie ich das umsetzten soll.
Ein Ball sollte z.b. auch auf einer schräge gut rollen können, nicht nur auf einer Gerade. Wobei der Winkel der Schräge nicht zwangsläufig bekannt ist

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

3

24.01.2010, 19:33

Gerade für einen Ball lässt sich solch simple Physik relativ leicht implementieren. Um ein Rollen reinzubringen, musst du Reibungskräfte berücksichtigen, die bei jeder Kollision für ein zusätzliches Drehmoment (Kraft in Tangentialrichtung!) sorgen, und somit ein "rollen" verursachen.

Das kannst du natürlich auch in dein Projekt direkt einbaun, doch wärs glaub ich besser (vor allem aus didaktischen Gründen) du würdest auf Impulse umsteigen und damit ein allgemeineres System schreiben, dass dann ohne Behandlung von Sonderfällen auskommt.
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Gimp

Frischling

  • »Gimp« ist der Autor dieses Themas
  • Private Nachricht senden

4

24.01.2010, 19:53

hi,

wonach richtet sich das denn ob es ein Impuls gibt? Also wenn ein Ball auf einer Geraden gegen eine Wand läuft gibt es ja bei dem Aufprall ein Impuls, wenn er aber z.b. eine 30° steigung hochrollt nicht?

Kannst du eine Seite empfehlen wo das System etwas genauer beschrieben. Ich habe momentan leider keine andere Größen wie Drehmoment eingebaut, sondern lediglich ein Kraftvektor der die Bewegung beschreibt.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

24.01.2010, 22:12

Ich empfehle ein wenig Grundlagen zu pauken, gerade für das Thema Physik in Spielen:
Kraftvektor = Zeitliche Änderung (Ableitung nach der Zeit) eines Impuls = Impulsänderung pro Zeitintervall
Impulsvektor = Masse * Geschwindigkeitsvektor
usw. usf.
Wichtige Stichpunkte sind da noch Drehmoment, Drehimpuls, Erhaltungssätze.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

6

24.01.2010, 23:04

Schau dir am besten mal die Arbeiten von Erin Catto und/oder Jan Bender an. Eventuell auch Mirtich, aber das geht dann schon in komplexere Applikationen und vor allem in Richtung 3D (Jan Bender eigentlich auch ;))
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Werbeanzeige