Kollisionsabfrage Player-Level (3D Jump'n'Run)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Mau

Betreff: Kollisionsabfrage Player-Level (3D Jump'n'Run)

BeitragMi, Apr 27, 2005 11:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin Smile Ich möchte ein mehr oder weniger simples Game erstellen, in dem man in einem 3D-level zwischen Plattformen hin- und herspringt usw. So eine Art jump'n'run eben, nur in 3D. Allerdings ist mir nicht ganz klar, wie ich die Kollisionsabfrage zwischen Player und Level lösen soll.

Modelliert man dazu am besten das ganze Level als ein einziges 3D-Modell und prüft dann auf Box(Player)-Polygon(Level)-Kollision? Ist das nicht ziemlich langsam? Welche Möglichkeiten gäbe es noch?

Und wie findet man dann (am effizientesten) heraus, ob der Spieler gerade auf einer Falle etc. steht? Durch eine simple Positionsabfrage oder wieder durch Kollisionscheck? Oder mit Pivots? Was ist am schnellsten?

Möchte nicht erst tagelang daran coden, um dann festzustellen, daß meine Lösung viel zu uneffizient ist. Hat jemand ein paar grundlegende Tipps, wie das in der Regel gemacht wird?

pokop

BeitragMi, Apr 27, 2005 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach es am besten mit dem befehl:

BlitzBasic: [AUSKLAPPEN]

Collisions type_spieler,type_falle,checkmethode,ergebnis


Schau am besten mal auf www.Blitzbase.de
Da sind viele gute Tutorials
 

Mau

BeitragMi, Apr 27, 2005 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hat denn hier keiner mehr die Konzentration, ein Posting RICHTIG zu lesen? Seufz... dann halt nicht.
 

BurningSoul

Betreff: Kollisionsabfrage

BeitragDo, Apr 28, 2005 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Also die Antwort meines vorredners war zwar korreckt,
aber natürlich auch was kurz!

Also , die Kollisionsabfrage gliedert sich in mehrere Teile.

Als erstes musst Du Dir mal mehrere sogenannte Kollisionstypen ausdenken;

Dazu tipps Du

BlitzBasic: [AUSKLAPPEN]

EntityType MeinEntity, zahl


hierbei ist MeinEntity das Handle eines Onjektes,
und die zahl am besten eine Konstante -
es geht aber auch mit reinen zahlen -
weise also Deiner Welt, und allen objekten,
die die Welt miteinschliesst, und die bei der Kollisionsabfrage
gleich behandelt werden soll, die gleiche Zahl zu -
ich schlage vor : Eins!

Weise nun mit dem selben Befehl Deinem Spieler Entity eine ANDERE zahl zu , z.b 2 !

nun führst Du in Deiner Hauptschleife immer genau einmal den Befehl Collisions durch, und zwar so:

BlitzBasic: [AUSKLAPPEN]

Collisions (2,1,2,2) ; player & world


die erste zahl dabei ist der typ deines spielers , die zweite der typ des objektes!

dabei ist zu beachten, das dies ALLE objekte checkt!
und sämtliche Bewegungen durch den level automatisch verhindert - noclip ist nur noch durch zuweisung eines anderen entitytypes oder nicht mehr abfragen der collisionen möglich!

willst du nun genau wissen, wer wen berührt hat,
so schlage mal die Befehle

BlitzBasic: [AUSKLAPPEN]

CountCollisions
CollisionEntity


nach

Tipp : am einfachsten schlägst Du nach, indem Du hier in meinem Post auf die blauen Befehle klickst mit der Maus -
denn alle Befehle, die in BB-Code gepostet wurden,
werden automatisch zu hyperlinks gemacht!

Da Du am besten lernst, indem Du selber etwas ausprobierst,
hier nur die Allgemeine vorgehensweise:

man checkt , ob mehr als eine kollision stattgefunden hat,
und zwar in einer schleife,
und reagiert dann unterschiedlich, je nachdem,
was alles berührt wurde, denn die berührung mit der Welt könnte z.b anzeigen, das der Spieler wieder auf dem Boden ist,
und wieder springen kann (was er ja nicht können sollte, wenn er grade in der Luft hängt) , während die Berührung mit einer Mine in der Regel ganz andere Folgen hat .... Twisted Evil

wünsche viel Erfolg und Spass beim coden,
und berichte uns mal
ob du Erfolg hattest

Mfg, Euer Soul !

Jan_

Ehemaliger Admin

BeitragFr, Apr 29, 2005 10:55
Antworten mit Zitat
Benutzer-Profile anzeigen
DEfiniere bitte, das 3D Jump and Run,
ala, Mario, TGombraider, oder Satan
Sonst, wird es wohl etwas schwer, dir das richtige zusagen.
between angels and insects

stfighter01

BeitragFr, Apr 29, 2005 12:32
Antworten mit Zitat
Benutzer-Profile anzeigen
an und für sich sollte ein kollisionscheck von 1nem player mit der umgebung ausreichend schnell funktionieren.
zur performanceverbesserung kannst du ja alle gegner ausser sichtweite ausblenden u. einfrieren u. ihre collisionstypen wegnehmen.

desweiteren gäbe es noch die möglichkeit von externen Physikengines.
allerdings brauchts da eine gewisse zeit um sich hineinzuarbeiten.

mfg stfighter
Denken hilft!
 

Gerhard

BeitragFr, Apr 29, 2005 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau doch in die 3D-Samples.
Zum Beispiel in: Open DNA\Nebula runner.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group