Kollision; Ich find den Fehler nicht

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Lakorta

Betreff: Kollision; Ich find den Fehler nicht

BeitragSo, Dez 26, 2010 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab schon wieder ein problem mit Kollision, und zwar, dass der Spieler nicht stehenbleibt, wenn er mit dem Gelände kollidiert.
Code:

Code: [AUSKLAPPEN]

AppTitle "Dragon-Eye"
;---Grafikeinstellungen---
Graphics3D 800,600,16,2
SetBuffer BackBuffer()
timer=CreateTimer(60)



;---Kamera-Einstellungen---
cam=CreateCamera()
CameraRange cam,1,100



;---Terrain---
;Heightmap
map=LoadTerrain("Images\heightmap.png")
EntityTexture map,LoadTexture("Images\land.png")
;Himmel
sky=CreateSphere()
ScaleEntity sky,5,5,5
PositionEntity sky,EntityX(cam),EntityY(cam),EntityZ(cam)
EntityParent sky,cam
EntityTexture sky,LoadTexture("Images\himmel.png")
FlipMesh sky
EntityOrder sky,1
;Wasser
wasser=LoadTexture("Images\wasser.png")
ScaleTexture wasser,10,10
Dim water(5)
For i=1 To 5
   water(i)=CreatePlane()
   PositionEntity water(i),0,-30*i,0
   EntityAlpha water(i),0.5+0.1*i
   EntityTexture water(i),wasser
Next
;Licht
licht=CreateLight(2)



;---Spieler-Einstellungen---
player=LoadMesh("Meshs\player.x")
EntityParent cam,player
PositionEntity player,25,0.8,21

Global player_hp=100
Global player_hp_max=100
Global player_tmp#=0.2



;---Meshs-Einstellungen---



;---Kollision---
EntityType map,1
EntityType player,2

Collisions 2,1,2,1



;---!---Hauptschleife---!---
While Not KeyHit(1)
PositionEntity licht,EntityX(player),EntityY(player)+10,EntityZ(player)



;---Spielersteuerung---
If KeyDown(17) Then MoveEntity player,0,0,player_tmp
If KeyDown(30) Then MoveEntity player,-player_tmp,0,0
If KeyDown(31) Then MoveEntity player,0,0,-player_tmp
If KeyDown(32) Then MoveEntity player,player_tmp,0,0



;---3D-Ende---
RenderWorld



;---Spieleranzeige---



;---Sonstiges---
WaitTimer timer
Flip 0
Wend
End


Ich finde da den Fehler irgendwie nicht Confused Ich hoffe ihr könnt helfen.
---

Xeres

Moderator

BeitragSo, Dez 26, 2010 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
EntityBox oder EntityRadius auf den Spieler anwenden.

Nachtrag: UpdateWorld solltest du auch nicht weglassen!

Lakorta

BeitragSo, Dez 26, 2010 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah danke. Hab die ganze Zeit nach dem Fehler gesucht, und dabei nur UpdateWorld vergessen Embarassed

Noch mal eine andere Frage. Ich hab das jetzt so gemacht, aber der Spieler fällt durch die Map durch. Die normale Kollision mit Wänden funktioniert einwandfrei:

Code: [AUSKLAPPEN]

AppTitle "Dragon-Eye"
;---Grafikeinstellungen---
Graphics3D 800,600,16,2
SetBuffer BackBuffer()
timer=CreateTimer(60)



;---Kamera-Einstellungen---
cam=CreateCamera()
CameraRange cam,1,100



;---Terrain---
;Heightmap
map=LoadTerrain("Images\heightmap.png")
EntityTexture map,LoadTexture("Images\land.png")
;Himmel
sky=CreateSphere()
ScaleEntity sky,5,5,5
PositionEntity sky,EntityX(cam),EntityY(cam),EntityZ(cam)
EntityParent sky,cam
EntityTexture sky,LoadTexture("Images\himmel.png")
FlipMesh sky
EntityOrder sky,1
;Wasser
wasser=LoadTexture("Images\wasser.png")
ScaleTexture wasser,10,10
Dim water(5)
For i=1 To 5
   water(i)=CreatePlane()
   PositionEntity water(i),0,-30*i,0
   EntityAlpha water(i),0.5+0.1*i
   EntityTexture water(i),wasser
Next
;Licht
licht=CreateLight(2)



;---Spieler-Einstellungen---
player=LoadMesh("Meshs\player.x")
EntityRadius player,1
EntityParent cam,player
PositionEntity player,25,0.8,21

Global player_hp=100
Global player_hp_max=100
Global player_tmp#=0.2



;---Meshs-Einstellungen---



;---Kollision---
EntityType map,1
EntityType player,2

Collisions 2,1,2,1



;---!---Hauptschleife---!---
While Not KeyHit(1)
PositionEntity licht,EntityX(player),EntityY(player)+10,EntityZ(player)



;---Spielersteuerung---
MoveEntity player,0,-0.2,0
If KeyDown(17) Then MoveEntity player,0,0,player_tmp
If KeyDown(30) Then MoveEntity player,-player_tmp,0,0
If KeyDown(31) Then MoveEntity player,0,0,-player_tmp
If KeyDown(32) Then MoveEntity player,player_tmp,0,0



;---3D-Ende---
UpdateWorld
RenderWorld



;---Spieleranzeige---



;---Sonstiges---
WaitTimer timer
Flip 0
Wend
End


EDIT:
Hab den Fehler raus. Der Spieler musste einfach nur 0.3 mehr nach oben (y) positonieren, dann hat das auch funktioniert.
---

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group