Mesh Kollision
Übersicht

macuesBetreff: Mesh Kollision |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe vor einigen Tagen begonnen mich mit Blitz Basic und 3D Modellierung auseinanderzusetzen. Habe jetzt den Umriss eines Raumes in MilkShape erstellt und ein weiteres Mesh (Als Test eine Box) um einen "Spieler" durch den Raum zu bewegen. Bewegt sich auch schon wunderbar. Problem: Wie schaffe ich es nun, dass mein Mash (Spieler) nicht durch die Wände des anderen Meshs (Raum) durchläuft? Habe schon einige Tuts gelesen und mir auch verschiedene Kollisionen angesehen. Aber irgendwie verstehe ich das nicht oder es fehlen die entscheidenen Informationen. Brauch also Hilfe... Bitte dran denken, ich bin Anfänger. ![]() Gruß PinkPanther |
||
macuesBetreff: Immer noch Hilfe! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Falls die Frage unverständlich ist oder irgendwas anderes nicht stimmt, so das mir keiner eine Antwort geben kann, bitte ich um Info. | ||
![]() |
Gina |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
also normalerweise wird jedem Mesh ein EntityType zugewiesen. dem Spieler die 1 und dem Raum die 2. Außerdem gibst du dem Spieler noch einen EntityRadius. Wenn du dann mit Collisions 1,2,2,2 die Kollision prüfst, müßte es klappen. Schau dir also in der Onlinehilfe mal die Befehle EntityType, EntityRadius und Collisions an. So ganz hundertprozentig hab ich es allerdings auch noch nicht verstanden. Kann man bei EntityType eine beliebige Nummer wählen? Also nicht nur 1 und 2? Ich hab nämlich ein weiteres Mesh hinzugefügt. Eine kleine Plattform, die sich rauf und runter bewegt. So eine Art Fahrstuhl. Und da klappt die Kollision nicht mehr. Meine Figur fällt einfach durch... ![]() Wäre also auch für jeden Tipp dankbar, Gina. |
||
www.jk-spiele.de |
macues |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Schonmal sehr hilfreich aber was sagen mir die Zahlen!? | ||
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit EntityType kannst du belibige Zahlen wählen, wie zum Beispiel: 34 und 255, 1 und 3,...
Die Zahlen sind folgende: Die eins steht für den ersten Kolisions"partner", die zweite für den zweiten, die dritte Zahl ist die Erkennungsart der Kollision, die Vierte die Reaktion. |
||
Wer weiß was kommt.. ? |
macues |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aha, das heißt, dass ich die verschiedenen Kollisions-Partner "nummerieren" muss!? | ||
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, und das machst du mit EntityType! | ||
Wer weiß was kommt.. ? |
macues |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke! Werde es gleich mal ausprobieren. | ||
macues |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ach so, und immer her mit weiteren nützlichen Typs für Kollisionen. ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Macues, lade dir bitte auf www.blitzbase.de die deutsche onlinehilfe runter. Da werden alle Befehle erklärt - auch die Parameter die du angeben kannst.
@ Gina: nach meinem Verständnis (ich hab es jetzt nicht probiert) ist entitytype ein beliebiger Integer und vorallem wichtig bei entitycollided (um verschiedene Reaktionen möglich zu machen). Collisions erwartet ja eine Form des Kollisionskörpers (Quader, Ellipsoid, oder Polygongenau) und ist somit von Entitytype insofern unabhängig da Du ja den Kollisionskörper mit entitybox ODER entityradius festlegst. Wenn deine Kollision mit dem Fahrstuhl also nicht klappt vermute ich dass entweder a) du für den Fahstuhl keinen Kollisionstyp (am besten wohl Quader) festgelegt hast oder b) dass man jeden Entitytype nur einmal verwenden kann (was ich wiegesagt nicht getestet habe- bin in 3D noch unbeleckt bis auf ein paar Spielereien). Im Falle von b) wäre dann die Lösung den Fahrstuhl auf entitytype 3 zu setzen und mit einem gesonderten collisions abzufragen. (aber wie gesagt alles theoretisch... ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Gina |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe jetzt dem Fahrstuhl den EntityType 3 zugewiesen und Collisions 1,3,2,1 gewählt. Die Figur hat einen EntityRadius. Der Fahrstuhl nicht. Daher die 2 für Kugel-Polygon-Kollision.
Wenn der Fahrstuhl auf dem Weg nach unten ist, kann ich durch ihn durch hinauf springen und er fährt mit der Figur runter. Aber er fährt nicht mit ihr hoch. Ich kann entweder durch ihn durch springen, oder bleibe an der Unterseite hängen. Habe auch schon dem Fahrstuhl einen EntityRadius zugewiesen und auf Kugel-Kugel geprüft, aber dann passiert gar nix. Was mache ich falsch? Tausend Dank, Gina. |
||
www.jk-spiele.de |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuche mal andersrum zu Prüfen (also: 3,1,2,1) - es ist möglich dass Quelle und Ziel eine Rolle dabei spielen...
EDIT: collisions falsch geschrieben. sorry ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
macues |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Na Supi, jetzt verstehe ich wieder gar nichts. Ich will einfach nur durch ein Gebäude laufen (was ich in Milkshape erstellt habe) und nicht durch den Fussboden oder die Wand schweben können.
Tutorials habe ich wie gesagt schon gelesen, aber entweder ich versteh da was falsch oder da steht nicht drinne was ich möchte. Das mit der Hilfe funz. irgendwie nicht. Obwohl ich die EXE - Datei in das Help Verzeichnis kopiert habe. Irgendwie exestiert in dem Ordner auch keine Commands.dat. Vielleicht weil das eine Demo Version ist!? |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
blitzbase.de hat Folgendes geschrieben: Installation Wie integriert man nun diese wunderbare Hilfe ins BlitzBasic-Programm? Ganz einfach: Downloade zuerst die gepackte Onlinehilfe. Starte danach den Windows-Explorer und wechsele in das BlitzBasic-Verzeichnis. Dann musst du den Ordner "Help" entweder umbenennen oder löschen. Danach kann die Zip-Datei der Onlinehilfe so entpackt werden... |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
macues |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ach so, sorry habe eine andere Hilfe unter den Programmen gesaugt. | ||
![]() |
Gina |
![]() Antworten mit Zitat ![]() |
---|---|---|
BladeRunner hat Folgendes geschrieben: Versuche mal andersrum zu Prüfen (also: 3,1,2,1) - es ist möglich dass Quelle und Ziel eine Rolle dabei spielen...
Das funktioniert leider auch nicht, weil es ja keine Polygon-Kugel-Kollision gibt. Habs jetzt mal mit ner Box probiert, aber da passiert rein gar nix. Null Kollision, egal wie groß ich die Box wähle... ![]() Ich bin mir auch nicht sicher, ob die Box sich mit bewegt oder ob sie auch wirklich am selben Fleck erstellt wird. Ich finde es auch blöd, dass man da nochmal Koordinaten angeben muss... Irgendwie muss das doch funktionieren... ![]() Gina. |
||
www.jk-spiele.de |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich fürchte dass in diesem fall meine theoretischen Kenntnisse nicht ausreichen. Ich hatte der OH entnommen dass bei Kugel-Polygon kein Typ gegeben sein muss und dachte daher dass es auch umgekehrt funktioniert. hab ein wenig nit dem demoproggie in der oh rumgespielt, da funktioniert es ja einwandfrei, obwohl keiner der Körper eine Collisionsbox hat. Versuch es doch mal ganz ohne- vielleixcht geht es dann ? | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
macues |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei mir funz. dass auch nicht.
Hier mal mein Quellcode. Vielleicht macht das, dass Ganze etwas verständlicher. Ich weiß, nicht sehr sauber, aber es geht auch gerade nur ums üben. Graphics3D 800,600 SetBuffer BackBuffer() ClsColor 0,0,255 setup() ;Spieler laden Global player=LoadMesh("figur.3ds") EntityType player,2 cam = CreateCamera(player) ; Kamera1 PositionEntity cam,0,5,-8 light = CreateLight() ; Lichtquelle RotateEntity light,90,0,0 While Not KeyDown(1) ; Solange nicht ESC gedrückt wird läuft Schleife RotateEntity player,x#,y#,z# If KeyDown(200) Then MoveEntity player,0,1,0 ;Hoch If KeyDown(203) Then y#=y#+1 ;links drehen If KeyDown(205) Then y#=y#-1 ;rechts drehen If KeyDown(208) Then MoveEntity player,0,-1,0 ;runter If KeyDown(57) Then MoveEntity player,0,0,1 ; Gas geben Collisions 1,2,2,2 UpdateWorld RenderWorld Flip Wend End ; While Schleife Beenden Function Setup() ;Haus laden haus=LoadMesh("Haus2.3ds") EntityType haus,1 PositionEntity haus,0,0,MeshDepth(haus)*2 RotateEntity haus,-90,90,0 End Function |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
benutz bitte die Code-Tags.
Was mir schon auffällt: dein Level wird nicht Global geladen- die Variable ist also nach verlassen der Setup()-Funktion =0. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
macues |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was soll ich benutzen? "Code-Tags"?
Die Variable habe ich jetzt Global gemacht. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group