Kollision funktioniert nicht (3D)...
Übersicht

NerleBetreff: Kollision funktioniert nicht (3D)... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe ein Kollisionsproblem. Genau gesagt, kollidiert es bei mir gar nicht... und ich weiß einfach nicht woran es liegt.
Ich habe mich einige Stunden durch die Boardsuche gewühlt, aber bin einfach nicht schlauer als zuvor. Ich glaube zwar, das Prinzip der Kollisionsabfrage "einigermaßen" zu verstehen, aber mein Code funktioniert trotzdem nicht, es findet in keinster Weise eine Kollision statt, egal was ich versuche. Hier erstmal das Schema, nachdem ich vorgehe: Code: [AUSKLAPPEN] Spieler-Mesh EntityType 1 EntityRadius 1 Wand-Mesh EntityType 2 Collisions 1,2,2,2 HAUPTSCHLEIFE: Bewegung-Spieler UpdateWorld RenderWorld Das stimmt doch so, oder? Aber die Figur läuft immer noch wie ein Geist durch alle Objekte hindurch. Kann es vielleicht daran liegen, dass es sich bei der SpielerFigur um ein animiertes (MD2-)Objekt handelt? Macht das einen Unterschied? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aus deinem Pseudocode werde ich nicht ganz schlau, da ich nicht sicher sagen kann ob du was vergessen hast oder nicht.
Es müsste schonmal wie folgt heissen: Code: [AUSKLAPPEN] EntityType SpielerEntity,1
EntityRadius SpielerEntity,1 EntityType WandEntity,2 Collisions 1,2,2,2 ;HAUPTSCHLEIFE: ;Bewegung-Spieler UpdateWorld RenderWorld selbst dann sollte man wisse, dass Kollisionen unter 3D nur aus der Bewegung her kommen. Wird dabei ein Spieler innerhalb einer Kollisionsgrenze erstellt oder die Kollision eingeschaltet, so kann er sich in diesem Bereich ganz normal bewegen. Erst wenn dieser den Bereich verlässt und aufs neue gegen eine Wand läuft, geht er einer Kollision ein. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Nerle |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Hectic,
Zitat: Aus deinem Pseudocode werde ich nicht ganz schlau, da ich nicht sicher sagen kann ob du was vergessen hast oder nicht.
Ich hab das schon so gemacht, wie in Deinem Sample - glaube ich... Hier der entsprechende Code meines Colli-Tests: Code: [AUSKLAPPEN] Graphics3D 800,600,0,2 SetBuffer BackBuffer() AmbientLight 255,255,255 Hero% = LoadMD2 ("Media/tris.md2") HeroTex% = LoadTexture("Media/armour.pcx") EntityTexture Hero,HeroTex EntityShininess Hero,1 EntityType Hero,1 EntityRadius Hero,1 GLOBAL Camera = CreateCamera(Hero) PositionEntity Camera,0,180,-8 PointEntity Camera,Hero Global Labyrinth% = LoadMD2("Media/Labyrinth_test.md2") LabyrinthTex = LoadTexture("Media/wall3.bmp") PositionEntity Labyrinth,0,0,0 ScaleEntity Labyrinth,3,3,3 EntityTexture Labyrinth,LabyrinthTex ScaleTexture LabyrinthTex,.2,.2 EntityType Labyrinth,2 AnimateMD2 Hero,1,0.2,0,37; look/wait Collisions 1,2,2,2 ; ----------------------------------------------------- ; MAIN LOOP ; ----------------------------------------------------- While KeyHit(1) = 0 ; PLAYER MOVE & ANIMATE MoveForward =0 MoveBackward =0 ; Move Forward If KeyDown(200)=1 Then MoveEntity Hero,0,0,+.12 If walking=0 AnimateMD2 Hero,1,0.08,40,45 ; run fwd EndIf Walking =1 MoveForward =1 EndIf ; Move Backward If KeyDown(208)=1 Then MoveEntity Hero,0,0,-.12 If walking=0 AnimateMD2 Hero,1,0.08,40,45 ; run bwd EndIf walking=1 MoveForward=1 EndIf ; Move Left If KeyDown(205)=1 Then MoveEntity Hero,+.12,0,0 If walking=0 AnimateMD2 Hero,1,0.08,40,45 ; run bwd EndIf walking=1 MoveForward=1 EndIf ; Move Right If KeyDown(203)=1 Then MoveEntity Hero,-.12,0,0 If walking=0 AnimateMD2 Hero,1,0.08,40,45 ; run bwd EndIf walking=1 MoveForward=1 EndIf ; Look/Wait If MoveForward=0 And MoveBackward=0 And walking=1 AnimateMD2 Hero,1,0.2,0,37 ; look/wait walking=0 EndIf UpdateWorld RenderWorld Flip Wend End ![]() "Labyrinth" ist ein Mesh mit Boden und Wänden, die alle aus einem einzigen Mesh bestehen. Beim Start erscheint die Spielerfigur in der Mitte auf diesem Mesh - und kann leider bequem durch alle Wände laufen. Aber auch wenn ich eine Kiste irgendwo dort plaziere, läuft er bequem durch diese hindurch. |
||
- Zuletzt bearbeitet von Nerle am Do, Sep 06, 2007 20:14, insgesamt einmal bearbeitet
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hast es so gemacht, nur den EntityRadius vergessen für den Hero. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Nerle |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dreamora hat Folgendes geschrieben: Hast es so gemacht, nur den EntityRadius vergessen für den Hero.
Hatte ich vergessen, ja, und eben hinzugefügt - aber leider funktioniert es noch immer nicht. ![]() ![]() EDIT: Habe es eben mit einem Cube statt mit dem Labyrinth-Mesh versucht - da funktionierts... Aber eben nicht beim Labyrinth-Mesh... |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Habe leider MD2 nie genutzt.
Aber wenn die Kollision nicht geht, hat MD2 eventuell keine Normalen und ohne Normalen gibts keine Meshkollision. Gibt es überhaupt nen Grund den Level als MD2 zu machen? Das Format ist dafür höchst "untauglich" eigentlich, mit B3D und Hierarchie könntest du bessere Performance erreichen sowie Lightmapping nutzen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Nerle |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Neenee, das Level-Labyrinth ist ein .3ds-Modell. Nur die Spielerfigur ist ein MD2 ![]() Und an der Spieler-Figur liegt es definitiv nicht, wie es scheint: Ich habe jetzt eben testweise noch ein weiteres 3ds-Objekt hineingeladen, und gegen dieses kollidiert die Spieler-Figur wie sie soll. Nur eben nicht beim Labyrinth-Objekt... ich weiß aber einfach nicht warum. Irgendwas übersehe ich, weiß aber einfach nicht was. |
||
Nerle |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es funktioniert - Lag an der Mesh-Erstellung, und nicht an BB. ![]() PS: Dreamora, Du hattest übrigens Recht, ich hatte das LevelMesh doch erst als MD2 erstellt, nicht als 3ds, sorry, aber war total übermüdet und deshalb dämlich gestern ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bitte keine Doppelposts.
Und freut mich das es jetzt klappt ![]() generell: UpdateNormals sollte das Problem beheben |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group