Collisios
Übersicht

Last-Action-HeroBetreff: Collisios |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann mir mal jemand sagen wie ich das genau machen muss ,dass ein geladenes mesh sich üder ein terrain bewegt aber immer auf dem boden bleibt ?
Hier kann mir doch bestimmt jemand helfen ! Danke im Voraus |
||
![]() |
General Alex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nur ein kleines Beispiel:
Code: [AUSKLAPPEN] Graphics3D 800,600
SetBuffer BackBuffer() ; Jetzt noch die Kamera und Licht erstellen ; Ich hoffe, du hast die 3D-Tutorials gemacht ; Terrain laden soldat = LoadMesh ("soldat.b3d") EntityType soldat,1 ; Mehr dazu auf www.blitzbase.de ; Für dein Terrain noch folgendes: EntityType terrain,2 ; Wenn dein Terrain auch "terrain" heisst ; Mesh positionieren ... While Not KeyHit (1) ; Bewegen des Meshes und was du noch brauchst, dann: Collisions 1,2,2,2 ; Collisions EntityType1,EntityType2,Methode,Reaktion UpdateWorld RenderWorld Flip Wend Ich hoffe, das hilft dir etwas weiter. Das Beispiel ist jedoch nicht vollständig, du musst natürlich noch das Terrain laden, positionieren, allenfalls vergrössern usw. |
||
Last-Action-Hero |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke hat gefunzt ![]() |
||
Last-Action-Hero |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab jetzt aber doch noch ne kleine frage :
wie kann ich jetzt die y-Koordinate des meshs ablesen damit ich die camera auf gleicher höhe positionieren kann ? |
||
Trabukh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Y#=ENTITYY# (Entity [,Global])
Beschreibung Die Funktion ENTITYY ermittelt die Y-Koordinate eines Objekts. Dazu muss man zuerst die Identität eines Objekts (entity) angeben. Der optionale Parameter "Global" gibt an, ob eine absolute oder relative Koordinate ausgegeben werden soll. Eine absolute Koordinate ist immer auf das globale 3D-Koordinatensystem ausgerichtet. Eine relative Koordinate ist dagegen abhängig von der Position eines Parent-Objekts. Siehe auch ENTITYX und ENTITYZ. Parameter Entity = Identität eines Objekts (entity) Global = 0=absolut (Standard) 1=relativ Rückgabewert Es wird die Y-Koordinate eines Objekts zurückgeliefert. |
||
Last-Action-Hero |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
cool tausend dank | ||
Last-Action-Hero |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also wie immer hab ich mal wieder ein problem mit meiner Kollisionsabfrage
Ich hab da jetzt ein terrain und will ,dass die kamera immer am boden bleibt aber sie erhöht sich wenn ich gegen einen hügel laufe aber danach singt sie nichtmehr ab (aber das müsste sie doch eigentlich) Code: [AUSKLAPPEN] Graphics3D 800,600,32,0
SetBuffer BackBuffer() terr = LoadTerrain("Meshes\Terrains\hmap_1024.bmp") ScaleEntity terr,1,50,1 TerrainDetail terr,2000,True TerrainShading terr,True PositionEntity terr,-512,0,-512 tex = LoadTexture("Meshes\Terrains\lmap_256.bmp") ScaleTexture tex,1024,1024 EntityTexture terr,tex EntityType terr,2 cam = CreateCamera() PositionEntity cam,0,TerrainY(terr,0,0,0),0 ;RotateEntity cam,45,0,0 EntityType cam,1 light = CreateLight() PositionEntity light,0,200,-200 RotateEntity light,45,0,0 While Not KeyHit(1) Collisions 1,2,2,2 If KeyDown(200) Then MoveEntity cam,0,0,3 If KeyDown(208) Then MoveEntity cam,0,0,-3 If KeyDown(203) Then MoveEntity cam,-3,0,0 If KeyDown(205) Then MoveEntity cam,3,0,0 UpdateWorld RenderWorld Flip Wend End Kann mir jemand helfen ? - Ich denke schon ! Danke LAH |
||
![]() |
sami |
![]() Antworten mit Zitat ![]() |
---|---|---|
du musst die camera negativ auf der y-achse bewegen | ||
Last-Action-Hero |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
und wie genau mach ich das kann ich nicht einfach per Kollisionsabfrage das terrain und die cam verbinden ?
kann mir jemand mal kurz den code oder einen teil davon geben wie das genau aussieht ? Dnake LAH |
||
Trabukh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du kannst die Kollisionsabfrage auch ganz weglassen, spart Resourcen:
Code: [AUSKLAPPEN] PositionEntity Camera,EntityX(Camera),TerrainY(Terrain,EntityX(Camera),EntityY(Camera),EntityZ(Camera))+5,EntityZ(Camera)
Damit wird die Kamera automatisch wieder am Boden ausgerichtet. Dabei liegt sie in einer Höhe von +5, damit du nicht ganz am Boden bist. |
||
IonPainter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Trab... ist aber nicht realistisch ![]() Code: [AUSKLAPPEN] [... Initialisierung ...] Kamera = createcamera() entitytype Kamera, 1 entityradius Kamera, 1 Terrain = loadterrain([... Filename ...]) entitytype Terrain, 2 [... In der Hauptschleife ...] collisions 1,2,2,2 translateentity Kamera, 0, -.1, 0 ;Für simpelste Gravitation Edit: Sehe grade den Code da oben, hab das mal eingebaut... Code: [AUSKLAPPEN] Graphics3D 800,600,32,0
SetBuffer BackBuffer() terr = LoadTerrain("Meshes\Terrains\hmap_1024.bmp") ScaleEntity terr,1,50,1 TerrainDetail terr,2000,True TerrainShading terr,True PositionEntity terr,-512,0,-512 tex = LoadTexture("Meshes\Terrains\lmap_256.bmp") ScaleTexture tex,1024,1024 EntityTexture terr,tex EntityType terr,2 cam = CreateCamera() PositionEntity cam,0,TerrainY(terr,0,0,0),0 ;RotateEntity cam,45,0,0 EntityType cam,1 entityradius cam, 1 light = CreateLight() PositionEntity light,0,200,-200 RotateEntity light,45,0,0 While Not KeyHit(1) Collisions 1,2,2,2 If KeyDown(200) Then MoveEntity cam,0,0,3 If KeyDown(208) Then MoveEntity cam,0,0,-3 If KeyDown(203) Then MoveEntity cam,-3,0,0 If KeyDown(205) Then MoveEntity cam,3,0,0 Translateentity Cam, 0, -.13, 0 UpdateWorld RenderWorld Flip Wend End |
||
Last-Action-Hero |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok das klappt im prinzip schon aber wenn ich die gravitatieon (-.13) benutze und über einen abhang laufe dauert das 10 - 20 sek bis ich wieder am boden bin
Wenn ich aber einen höheren wert nehme (-10 oder so) dann kann ich den berg garnicht mehr hochlaufen Da muss es doch noch einen anderen weg geben ? Trotzdem danke |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group