Collisios

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Last-Action-Hero

Betreff: Collisios

BeitragSo, Apr 18, 2004 1:58
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Apr 18, 2004 9:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Apr 18, 2004 11:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke hat gefunzt Razz
 

Last-Action-Hero

BeitragSo, Apr 18, 2004 11:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Apr 18, 2004 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Apr 18, 2004 11:47
Antworten mit Zitat
Benutzer-Profile anzeigen
cool tausend dank
 

Last-Action-Hero

BeitragFr, Apr 23, 2004 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Apr 23, 2004 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst die camera negativ auf der y-achse bewegen
 

Last-Action-Hero

BeitragSa, Apr 24, 2004 10:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Apr 24, 2004 11:02
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Apr 24, 2004 11:23
Antworten mit Zitat
Benutzer-Profile anzeigen
@Trab... ist aber nicht realistisch Smile

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

BeitragSa, Apr 24, 2004 11:53
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group