[B3D] Kollisionen - Ich checks nicht
Übersicht

![]() |
BastianABetreff: [B3D] Kollisionen - Ich checks nicht |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, derzeit programmiere ich an einem Ego-Shooter doch ich komm nciht so mit den Kollisionen zurecht.
Welche Funktionen müssen wo hin von der Kollision? hab schon so vieles Versucht, in dem Fall bräuchte ich eine Quader zu Poly Kollision, da um den Spieler ein Quader reicht, aber um die Map oder das Terrain brauche ich eine Ply Kollsion doch ich kann immer überall durchlaufen. Was mache ich falsch? Hier mein aktueller Code: Code: [AUSKLAPPEN] Graphics3D 1024, 600, 32, 2 SetBuffer BackBuffer() light = CreateLight() RotateEntity light, 90, 0, 0 AppTitle "Warsoft" font = LoadFont("Calibri",20,1) SetFont font Map = LoadMesh("map.3ds") PositionEntity map, 0, 0, 0 Spieler = LoadMesh("player.3ds") PositionEntity Spieler, 0, 0, 0 Global cam1=CreateCamera(Spieler) PositionEntity cam1, 0, 0.689, -0.014 RotateEntity cam1, 15, 180,0 ;Terrain-Laden terrain=LoadTerrain("terrain.bmp") rasen=LoadTexture ("rasen.bmp") EntityTexture terrain,rasen,0,0 ;Kollisionen Collisions terrain, spieler, 2, 3 Collisions map, spieler, 2, 3 EntityType terrain, 2 EntityType map, 2 EntityType spieler, 3 EntityBox spieler, 0.3, 0.9, 0.15, 0.6, 1.8, 0.3 ;Kugeln für Gun kugel1 = CreateSphere (8, Spieler) ScaleEntity kugel1, 0.01, 0.01, 0.01 PositionEntity kugel1, -0.097, 0.535, 0.290 EntityColor kugel1, 0, 0, 0 kugel2 = CreateSphere (8, Spieler) ScaleEntity kugel2,0.01, 0.01, 0.01 PositionEntity kugel2, -0.097, 0.535, 0.290 EntityColor kugel2,0, 0, 0 kugel3 = CreateSphere (8, Spieler) ScaleEntity kugel3,0.01, 0.01, 0.01 PositionEntity kugel3, -0.097, 0.535, 0.290 EntityColor kugel3,0, 0, 0 kugel4 = CreateSphere (8, Spieler) ScaleEntity kugel4,0.01, 0.01, 0.01 PositionEntity kugel4,-0.097, 0.535, 0.290 EntityColor kugel4, 0, 0, 0 kugel5 = CreateSphere (8, Spieler) ScaleEntity kugel5,0.01, 0.01, 0.01 PositionEntity kugel5,-0.097, 0.535, 0.290 EntityColor kugel5, 0, 0, 0 kugel6 = CreateSphere (8, Spieler) ScaleEntity kugel6,0.01, 0.01, 0.01 PositionEntity kugel6, -0.097, 0.535, 0.290 EntityColor kugel6,0, 0, 0 kugel7 = CreateSphere (8, Spieler) ScaleEntity kugel7,0.01, 0.01, 0.01 PositionEntity kugel7,-0.097, 0.535, 0.290 EntityColor kugel7,0, 0, 0 kugel8 = CreateSphere (8, Spieler) ScaleEntity kugel8,0.01, 0.01, 0.01 PositionEntity kugel8,-0.097, 0.535, 0.290 EntityColor kugel8,0, 0, 0 ;Soundladen s_shoot = LoadSound ("shoot.wav") Gun = LoadMesh("ak47.3ds", Spieler) PositionEntity Gun, 0, 0, 0 CameraRange cam1, 0.001, 40001 Kugel1si = MeshesIntersect (Map, Kugel1) Global Aktschuss# = 0 While Not KeyHit(1) Frames = Frames + 1 TurnEntity Spieler,0,MouseXSpeed() ,0 ;Spieler-Funktionen: If KeyDown(17) Then MoveEntity Spieler, 0, 0, -0.03 EndIf If KeyDown(57) Then Aktschuss# = Aktschuss# + 0.1 chn1 = PlaySound(s_shoot) EndIf If KeyDown(31) Then MoveEntity Spieler, 0, 0, +0.03 EndIf ;Kugel-Funktionen: If Aktschuss > 0.5 And Aktschuss < 1.4 Then MoveEntity kugel1, 0, 0, -0.4 EndIf If Aktschuss > 1.5 And Aktschuss < 2.4 Then MoveEntity kugel2, 0, 0, -0.4 EndIf If Aktschuss > 2.5 And Aktschuss < 3.4 Then MoveEntity kugel3, 0, 0, -0.4 EndIf If Aktschuss > 3.5 And Aktschuss < 4.4 Then MoveEntity kugel4, 0, 0, -0.4 EndIf If Aktschuss > 4.5 And Aktschuss < 5.4 Then MoveEntity kugel5, 0, 0, -0.4 EndIf If Aktschuss > 5.5 And Aktschuss < 6.4 Then MoveEntity kugel6, 0, 0, -0.4 EndIf If Aktschuss > 6.5 And Aktschuss < 7.4 Then MoveEntity kugel7, 0, 0, -0.4 EndIf If Aktschuss > 7.5 And Aktschuss < 8.4 Then MoveEntity kugel8, 0, 0, -0.4 Aktschuss = 0 EndIf If Aktschuss > 8.5 Then PositionEntity kugel1,-0.097, 0.535, 0.290 PositionEntity kugel2,-0.097, 0.535, 0.290 PositionEntity kugel3,-0.097, 0.535, 0.290 PositionEntity kugel4,-0.097, 0.535, 0.290 PositionEntity kugel5,-0.097, 0.535, 0.290 PositionEntity kugel6,-0.097, 0.535, 0.290 PositionEntity kugel7,-0.097, 0.535, 0.290 PositionEntity kugel8,-0.097, 0.535, 0.290 RotateEntity kugel1, 0, 0,0 RotateEntity kugel2, 0, 0,0 RotateEntity kugel3, 0, 0,0 RotateEntity kugel4, 0, 0,0 RotateEntity kugel5, 0, 0,0 RotateEntity kugel6, 0, 0,0 RotateEntity kugel7, 0, 0,0 RotateEntity kugel8, 0, 0,0 MoveEntity kugel1, 0, 0, 0 MoveEntity kugel2, 0, 0, 0 MoveEntity kugel3, 0, 0, 0 MoveEntity kugel4, 0, 0, 0 MoveEntity kugel5, 0, 0, 0 MoveEntity kugel6, 0, 0, 0 MoveEntity kugel7, 0, 0, 0 MoveEntity kugel8, 0, 0, 0 EndIf If ZaehlStart + 1001 < MilliSecs() Then FramesJeSekunde = Frames Frames = 0 ZaehlStart = MilliSecs() EndIf UpdateWorld RenderWorld ;Texte Text 0,20,Aktschuss Text 0,40, FramesJeSekunde + " FPS" Flip Wend End |
||
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es gibt keine Quader-zu-Polygon Kollisionen (leider). Nur Kugel-zu-X. | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deine 8 Kugeln sind schon mal kein besonders durchdachter Anfang, ich empfehle dringend Types zu verwenden. Im Forum findest du massenweise dazu.
Für die Kollision müsstest du - soweit ich das übersehe - richtig herum angeben, welches Objekt sich bewegt und welches still steht; Code: [AUSKLAPPEN] Collisions spieler, terrain, 2, 3
Collisions spieler, map, 2, 3 Siehe Collisions ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
BastianA |
![]() Antworten mit Zitat ![]() |
---|---|---|
Etwa so?
Code: [AUSKLAPPEN] ;Kollisionen
Collisions spieler, terrain, 2, 3 Collisions spieler, map, 2, 3 EntityType terrain, 2 EntityType map, 2 EntityType spieler, 3 EntityBox spieler, 0.25, 0.9, 0.1, 0.5, 1.8, 0.2 Ich verstehe nicht, was daran falsch ist, klappt nicht :S |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ähm - "spieler", "terrain" und "map"sind Entitys? Dann kann das so nicht funktionieren.
Code: [AUSKLAPPEN] EntityType terrain, 2
EntityType map, 2 EntityType spieler, 3 Collisions 3, 2, 2, 3 Collisions 3, 2, 2, 3 Die Kollisionstypen sind einfache Zahlen - es empfiehlt sich, Konstanten dafür zu benutzen. Code: [AUSKLAPPEN] Const MAP_COL=1, spieler_COL=2
EntityType terrain, MAP_COL EntityType map, MAP_COL EntityType spieler, spieler_COL Collisions spieler_COL, MAP_COL, 2, 3 Collisions spieler_COL, MAP_COL, 2, 3 |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group