Kollision mit camera zu dem terrain

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

lukasimgruet

Betreff: Kollision mit camera zu dem terrain

BeitragDo, Jan 28, 2010 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie schaffe ich es das die Kamera mit dem Terrain kollidiert?

Tankbuster

BeitragDo, Jan 28, 2010 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Entweder benutzt du TerrainY und machst sowas:

Achtung: Pseudocode.
Code: [AUSKLAPPEN]
If EntityY(cam)<TerY(campos) Then PositionEntity cam,x,TerY(campos),z


Oder du machst es mit Collisions, ect.

Einfach mal die Onlinehilfe durchblättern Wink
Twitter
Download Jewel Snake!
Windows|Android
 

lukasimgruet

BeitragDo, Jan 28, 2010 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
aha also jetzt z.b so was:

terrain
entitytype, 1

cam
entitytype, 2

collisons 1,2
 

lukasimgruet

BeitragDo, Jan 28, 2010 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, so gings nicht.

Ich zeig mal den Code:
Code: [AUSKLAPPEN]

Graphics3D 800,600,32,1

SetBuffer BackBuffer()

 

terrain=LoadTerrain("heightmap.bmp")
text1=LoadTexture ("terrain text1.bmp")
text2=LoadTexture ("mapt2.bmp")
EntityTexture terrain,text1,0,0
EntityTexture terrain,text2,0,1
TerrainDetail= 4000
ScaleEntity terrain,50,290,50
ScaleTexture text1,50,50
ScaleTexture text2,3,3
MoveEntity terrain,0,0,0
EntityType terrain, 1

 
water=CreatePlane()
watertext=LoadTexture ("wasser.bmp",4)
EntityTexture water,watertext
ScaleTexture watertext,100,100
EntityShininess water,1 
MoveEntity water,0,10,0
EntityAlpha water,0.8

cam = CreateCamera()
MoveEntity cam,1000,800,1000
CameraFogMode cam,1
CameraRange cam,1,30000
CameraFogRange cam,100,6000
CameraFogColor cam,40,140,255
CameraClsColor cam,40,140,255
EntityType cam, 2

light=CreateLight()
TurnEntity light,45,90,0

zombie=LoadMesh("modelle/zombie.b3d")
zombie_tex=LoadTexture("texturen/zombie.jpg")
EntityTexture zombie,zombie_tex
FreeTexture zombie_tex
ScaleEntity zombie,7,7,7
PositionEntity zombie,0,40,0
EntityType zombie,OBSTACLE

zombie=LoadMesh("modelle/zombie.b3d")
zombie_tex=LoadTexture("texturen/zombie.jpg")
EntityTexture zombie,zombie_tex
FreeTexture zombie_tex
ScaleEntity zombie,7,7,7
PositionEntity zombie,-10,0,-8
EntityType zombie,OBSTACLE
TurnEntity zombie, 0,90,0

fass=LoadMesh("modelle/fass.3ds")
fass_tex=LoadTexture("texturen/fass2.jpg")
EntityTexture fass,fass_tex
FreeTexture fass_tex
ScaleEntity fass,6,6,6
PositionEntity fass,-9.5,0.3,-9
EntityType fass,OBSTACLE
TurnEntity fass, 0,35,90

fass=LoadMesh("modelle/fass.3ds")
fass_tex=LoadTexture("texturen/fass.jpg")
EntityTexture fass,fass_tex
FreeTexture fass_tex
ScaleEntity fass,6,6,6
PositionEntity fass,-10.5,0,-9
EntityType fass,OBSTACLE
TurnEntity fass, 0,90,0

kiste=LoadMesh("modelle/kiste.3ds")
kiste_tex=LoadTexture("texturen/kiste.jpg")
EntityTexture kiste,kiste_tex
FreeTexture kiste_tex
ScaleEntity kiste,6,6,6
PositionEntity kiste,-8.5,0,-8
EntityType kiste,OBSTACLE
TurnEntity kiste, 0,90,0

kiste=LoadMesh("modelle/kiste.3ds")
kiste_tex=LoadTexture("texturen/kiste.jpg")
EntityTexture kiste,kiste_tex
FreeTexture kiste_tex
ScaleEntity kiste,6,6,6
PositionEntity kiste,-9.7,130,-8
EntityType kiste,OBSTACLE
TurnEntity kiste, 0,0,0

kiste=LoadMesh("modelle/kiste.3ds")
kiste_tex=LoadTexture("texturen/kiste.jpg")
EntityTexture kiste,kiste_tex
FreeTexture kiste_tex
ScaleEntity kiste,6,6,6
PositionEntity kiste,-8,0,-7.5
EntityType kiste,OBSTACLE
TurnEntity kiste, 0,90,0



While Not KeyHit(1)

 

RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0

MoveMouse 512,384
MoveEntity cam,0,0,10

RenderWorld

Flip

Wend

ClearWorld

Silver_Knee

BeitragDo, Jan 28, 2010 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Der Edituser posted image button an deinen Posts ist dein freund =)

2. In der Hauptschleife fehlt vor RenderWorld ein Updateworld. der Befehl kümmert sich u.a. um Kollision

außerdem find ich die Zeile mit Collisions nicht
 

lukasimgruet

BeitragDo, Jan 28, 2010 23:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, den Befehl habe ich extra nicht mit eingegeben. Habe ihn natürlich schon auch getestet:)

Silver_Knee

BeitragFr, Jan 29, 2010 12:06
Antworten mit Zitat
Benutzer-Profile anzeigen
also collisions 1,2,2,2 kommt vor das Repeat und updateworld so wie beschrieben.

außerdem führt "TerrainDetail= 4000 " dazu dass TerrainDetail eine variable wird. Was du willst ist TerrainDetail terrain,4000

und was ehißt OBSTACLE bei dir?
 

lukasimgruet

BeitragFr, Jan 29, 2010 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Es geht immer noch nicht. Was mache ich falsch?




Code: [AUSKLAPPEN]

Graphics3D 800,600,32,1

SetBuffer BackBuffer()

 

terrain=LoadTerrain("heightmap.bmp")
text1=LoadTexture ("terrain text1.bmp")
text2=LoadTexture ("mapt2.bmp")
EntityTexture terrain,text1,0,0
EntityTexture terrain,text2,0,1
TerrainDetail terrain,4000
ScaleEntity terrain,50,290,50
ScaleTexture text1,50,50
ScaleTexture text2,3,3
MoveEntity terrain,0,0,0
EntityType terrain, 1

 
water=CreatePlane()
watertext=LoadTexture ("wasser.bmp",4)
EntityTexture water,watertext
ScaleTexture watertext,100,100
EntityShininess water,1 
MoveEntity water,0,10,0
EntityAlpha water,0.8

cam = CreateCamera()
MoveEntity cam,1000,800,1000
CameraFogMode cam,1
CameraRange cam,1,30000
CameraFogRange cam,100,6000
CameraFogColor cam,40,140,255
CameraClsColor cam,40,140,255
EntityType cam, 2

light=CreateLight()
TurnEntity light,45,90,0

zombie=LoadMesh("modelle/zombie.b3d")
zombie_tex=LoadTexture("texturen/zombie.jpg")
EntityTexture zombie,zombie_tex
FreeTexture zombie_tex
ScaleEntity zombie,7,7,7
PositionEntity zombie,0,40,0
EntityType zombie,OBSTACLE

zombie=LoadMesh("modelle/zombie.b3d")
zombie_tex=LoadTexture("texturen/zombie.jpg")
EntityTexture zombie,zombie_tex
FreeTexture zombie_tex
ScaleEntity zombie,7,7,7
PositionEntity zombie,-10,0,-8
EntityType zombie,OBSTACLE
TurnEntity zombie, 0,90,0

fass=LoadMesh("modelle/fass.3ds")
fass_tex=LoadTexture("texturen/fass2.jpg")
EntityTexture fass,fass_tex
FreeTexture fass_tex
ScaleEntity fass,6,6,6
PositionEntity fass,-9.5,0.3,-9
EntityType fass,OBSTACLE
TurnEntity fass, 0,35,90

fass=LoadMesh("modelle/fass.3ds")
fass_tex=LoadTexture("texturen/fass.jpg")
EntityTexture fass,fass_tex
FreeTexture fass_tex
ScaleEntity fass,6,6,6
PositionEntity fass,-10.5,0,-9
EntityType fass,OBSTACLE
TurnEntity fass, 0,90,0

kiste=LoadMesh("modelle/kiste.3ds")
kiste_tex=LoadTexture("texturen/kiste.jpg")
EntityTexture kiste,kiste_tex
FreeTexture kiste_tex
ScaleEntity kiste,6,6,6
PositionEntity kiste,-8.5,0,-8
EntityType kiste,OBSTACLE
TurnEntity kiste, 0,90,0

kiste=LoadMesh("modelle/kiste.3ds")
kiste_tex=LoadTexture("texturen/kiste.jpg")
EntityTexture kiste,kiste_tex
FreeTexture kiste_tex
ScaleEntity kiste,6,6,6
PositionEntity kiste,-9.7,130,-8
EntityType kiste,OBSTACLE
TurnEntity kiste, 0,0,0

kiste=LoadMesh("modelle/kiste.3ds")
kiste_tex=LoadTexture("texturen/kiste.jpg")
EntityTexture kiste,kiste_tex
FreeTexture kiste_tex
ScaleEntity kiste,6,6,6
PositionEntity kiste,-8,0,-7.5
EntityType kiste,OBSTACLE
TurnEntity kiste, 0,90,0

Collisions 1,2,2,2

While Not KeyHit(1)

 

RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0

MoveMouse 512,384
MoveEntity cam,0,0,10

UpdateWorld
RenderWorld

Flip

Wend

ClearWorld

End

Tankbuster

BeitragFr, Jan 29, 2010 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Eventuell solltest du der Kamera mit EntityRadius einen Kollisionsradius zuweisen. Ich benutzte eigentlich nie so eine Art der Kollision, deshalb bin ich mir nicht sicher, ob die Kamera standartmäßig schon einen Kollisionsradius hat.
Twitter
Download Jewel Snake!
Windows|Android

N0X

BeitragFr, Jan 29, 2010 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Löst zwar nicht das Problem, trotzdem wichtig:
Du lädst die Kiste z.B. 3mal.
Dafür gibt es den Befehl CopyEntity .
Einfach Code: [AUSKLAPPEN]
kiste2=CopyEntity(kiste)
schreiben, spart das ganze laden. Rolling Eyes

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Silver_Knee

BeitragFr, Jan 29, 2010 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Aha das terrain ist 1 und die kamera 2

Collisions funktioniert immer nur in eine richtung (außer bei Kugel-Kugel).
Bei dir heißt das

Collisions 1,2,2,2: Das terrain(als Kugel) gegen die Kamera (als genaue Kollision) wenn das Terrain sich bewegt. Das das nicht geht leuchtet glaube ich ein.

Besser ist also:

Collisions 2,1,2,2: Die Kamera (als Kugel) gegen das Terrain (als genaue Kollision) wenn die Kamera sich bewegt. Das ist doch das was du suchst
 

lukasimgruet

BeitragFr, Jan 29, 2010 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
jetzt findet endlich eine Kollison statt, doch ziemlich weit über dem terrain.

Aha klar!! wegen dem entityradius! Rolling Eyes

Es geht perfekt, vielen Dank Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group