[B3D] Kollisionen - Ich checks nicht

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

BastianA

Betreff: [B3D] Kollisionen - Ich checks nicht

BeitragDo, Jul 29, 2010 19:55
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jul 29, 2010 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt keine Quader-zu-Polygon Kollisionen (leider). Nur Kugel-zu-X.

Xeres

Moderator

BeitragFr, Jul 30, 2010 2:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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 in der OH...
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

BastianA

BeitragFr, Jul 30, 2010 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Xeres

Moderator

BeitragFr, Jul 30, 2010 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ä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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group