TerrainY aber wie?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

timo_81

Betreff: TerrainY aber wie?

BeitragMo, Sep 26, 2005 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will zum Testen ein Burg auf meine Terrain stellen ich habe folgendes versucht...das klappt aber nicht den die Burg schwebt zum Teil!


Code: [AUSKLAPPEN]

PositionEntity castle,800,TerrainY(terrain,EntityX(castle),0,EntityZ(castle)),1000

Mr.Keks

BeitragMo, Sep 26, 2005 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
PositionEntity castle,800,TerrainY(terrain,800,0,1000),1000
erscheint mir logischer ^^
MrKeks.net
 

timo_81

BeitragMo, Sep 26, 2005 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
jo hehe danke.

ach übrigens:
weisst du , wie man schräge fläche (sowas wie Rampen) hochlaufen kann??

Meine Kollisionskontolle blockt alles...

gruß
Timo

darth

Betreff: ..

BeitragMo, Sep 26, 2005 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
collisions TYPE_1,TYPE_2,METHODE,REACTION
bei REACTION musst du einfach 3 eingeben...
bsp: collisions 1,2,2,3
das sorgt dafür, dass du raufgliden kannst, aber nicht ständig blöd runterschlitterst wenn du nix machst...
Diese Signatur ist leer.
 

timo_81

BeitragMo, Sep 26, 2005 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
moin ,
ich hab es versucht aber er bleibt trotzdem stehen.

Collisions player,objekt,2,3

wie ihr seht hab ich ne drei aber irgendwie bleibt er stehen.
 

timo_81

BeitragMo, Sep 26, 2005 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
hier mal der code überfliegt ihn halt mal wenn ihr Zeit habt:

Code: [AUSKLAPPEN]

;3D Spiel








Init_3D()

Global Spieler=LoadAnimMesh("C:\3DSpiel\models\dwarf1.b3d" )
Global terrain=LoadTerrain("C:\3DSpiel\texturen\heightmap.jpg")
Global cam=CreateCamera()
Global dis#=10
Global tsizeX=50
Global tsizeY=230
Global tsizeZ=50
Global time=0
Global landschaft=1
Global objekt=2
Global player=3
global gegner=4
Global schalter=5

Global mesh = CreateMesh()
Global sky = create_skybox()
Global light=CreateLight()
PositionEntity sky,0,35,0

Load_Environment()
Create_Cam()
Create_Objects()
Create_Player()
Collision_Animation()
Main_Loop()





Function Init_3D ()
   
   Graphics3D 1024,768,16,1
   SetBuffer BackBuffer()
   
End Function



Function Load_Environment()

   
    terrain_layer1=LoadTexture("c:\3DSpiel\texturen\wiese.jpg")
    terrain_layer2=LoadTexture("c:\3DSpiel\texturen\stein.jpg")
   
    EntityTexture terrain,terrain_layer1,0,0
   EntityTexture terrain,terrain_layer2,0,1
   
   ScaleEntity terrain,tsizeX,tsizeY,tsizeZ
   ScaleTexture terrain_layer1,20,20
   ScaleTexture terrain_layer2,3,3
   
   
    wasser=CreatePlane()
   wasser_textur=LoadTexture ("C:\3DSpiel\texturen\wasser.jpg",4)

   EntityTexture wasser,wasser_textur
   ScaleTexture wasser_textur,100,100
   MoveEntity wasser,0,10,0
   EntityAlpha wasser,0.6

   
   
End Function


Function Create_Cam()

   

   EntityType cam,objekt
   MoveEntity cam,800,100,100
   CameraFogMode cam,1
   CameraRange cam,1,10000 
   CameraFogRange cam,100,4000 
   CameraFogColor cam,40,140,255
   CameraClsColor cam,40,140,255
   TurnEntity light,45,45,0
   
    MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
   
   
End Function


Function Create_Objects()

   castle=LoadMesh("C:\3DSpiel\models\castle1.x")
   castle_texture=LoadTexture("C:\3DSpiel\texturen\burg.jpg")
   PositionEntity castle,800,TerrainY(terrain,800,0,800),800
   ScaleEntity castle ,1.0,1.0,1.0
   EntityTexture castle,castle_texture
   EntityPickMode castle ,2
   EntityType castle,objekt
   EntityBox castle,-(MeshWidth(castle)/2),-(MeshHeight(castle)/2),-(MeshDepth(castle)/2),MeshWidth(castle),MeshHeight(castle),MeshDepth(castle)

End Function

Function create_skybox()
   
    If time <3000 then
      
   
   
    ;front face
    brush = LoadBrush("C:\3DSpiel\texturen\front5.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,-1,+1,-1,0,0
    AddVertex surface,+1,+1,-1,1,0
    AddVertex surface,+1,-1,-1,1,1
    AddVertex surface,-1,-1,-1,0,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush

    ;right face
    brush = LoadBrush("C:\3DSpiel\texturen\right5.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,+1,+1,-1,0,0
    AddVertex surface,+1,+1,+1,1,0
    AddVertex surface,+1,-1,+1,1,1
    AddVertex surface,+1,-1,-1,0,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush

    ;back face
    brush = LoadBrush("C:\3DSpiel\texturen\back5.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,+1,+1,+1,0,0
    AddVertex surface,-1,+1,+1,1,0
    AddVertex surface,-1,-1,+1,1,1
    AddVertex surface,+1,-1,+1,0,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush
 
    ;left face
    brush = LoadBrush("C:\3DSpiel\texturen\left5.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,-1,+1,+1,0,0
    AddVertex surface,-1,+1,-1,1,0
    AddVertex surface,-1,-1,-1,1,1
    AddVertex surface,-1,-1,+1,0,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush

    ;top face
    brush = LoadBrush("C:\3DSpiel\texturen\top5.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,-1,+1,+1,0,1
    AddVertex surface,+1,+1,+1,0,0
    AddVertex surface,+1,+1,-1,1,0
    AddVertex surface,-1,+1,-1,1,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush
   
    ;bottom face
    brush = LoadBrush("C:\3DSpiel\texturen\bottom5.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,-1,-1,-1,1,0
    AddVertex surface,+1,-1,-1,1,1
    AddVertex surface,+1,-1,+1,0,1
    AddVertex surface,-1,-1,+1,0,0
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush
   
    Else
   
   
   
    ;front face
    brush = LoadBrush("C:\3DSpiel\texturen\front5n.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,-1,+1,-1,0,0
    AddVertex surface,+1,+1,-1,1,0
    AddVertex surface,+1,-1,-1,1,1
    AddVertex surface,-1,-1,-1,0,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush

    ;right face
    brush = LoadBrush("C:\3DSpiel\texturen\right5n.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,+1,+1,-1,0,0
    AddVertex surface,+1,+1,+1,1,0
    AddVertex surface,+1,-1,+1,1,1
    AddVertex surface,+1,-1,-1,0,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush

    ;back face
    brush = LoadBrush("C:\3DSpiel\texturen\back5n.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,+1,+1,+1,0,0
    AddVertex surface,-1,+1,+1,1,0
    AddVertex surface,-1,-1,+1,1,1
    AddVertex surface,+1,-1,+1,0,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush
 
    ;left face
    brush = LoadBrush("C:\3DSpiel\texturen\left5n.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,-1,+1,+1,0,0
    AddVertex surface,-1,+1,-1,1,0
    AddVertex surface,-1,-1,-1,1,1
    AddVertex surface,-1,-1,+1,0,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush

    ;top face
    brush = LoadBrush("C:\3DSpiel\texturen\top5n.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,-1,+1,+1,0,1
    AddVertex surface,+1,+1,+1,0,0
    AddVertex surface,+1,+1,-1,1,0
    AddVertex surface,-1,+1,-1,1,1
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush
   
    ;bottom face
    brush = LoadBrush("C:\3DSpiel\texturen\bottom5.jpg",49)
    surface = CreateSurface(mesh,brush)
    AddVertex surface,-1,-1,-1,1,0
    AddVertex surface,+1,-1,-1,1,1
    AddVertex surface,+1,-1,+1,0,1
    AddVertex surface,-1,-1,+1,0,0
    AddTriangle surface,0,1,2
    AddTriangle surface,0,2,3
    FreeBrush brush
    LightColor light ,-255,-255,-255
    End if
   
   
    ScaleMesh mesh,2500,1000,2500
   
    FlipMesh mesh
    EntityFX mesh,1 ; make fullbright
    Return mesh
End Function

Function Create_Player()
   
   Spieler=LoadAnimMesh("C:\3DSpiel\models\dwarf1.b3d" )
   PositionEntity Spieler,800,247,EntityZ(cam)+10
   ScaleEntity Spieler ,0.1,0.1,0.1
   EntityType Spieler,player
   EntityBox Spieler,-(MeshWidth(Spieler)/2),-(MeshHeight(Spieler)/2),-(MeshDepth(Spieler)/2),MeshWidth(Spieler),MeshHeight(Spieler),MeshDepth(Spieler)

End Function


Function Collision_Animation()

   Collisions player,objekt,2,3
   Collisions player,landschaft,2,1

   ExtractAnimSeq Spieler, 2, 14
   ExtractAnimSeq Spieler, 112, 128
   ExtractAnimSeq Spieler, 162, 180
   ExtractAnimSeq Spieler, 16, 26
   ExtractAnimSeq Spieler, 16, 26

End Function


Function Main_Loop()

   
   
   
    While Not KeyHit(1)
    time=time+1
    If time=3000 Then
    Create_skybox()
    ElseIf time=6000 Then
    time=0
    LightColor light ,255,255,255
    Create_skybox()
    EndIf
   
   
   
 
    PositionEntity Spieler,EntityX(Spieler),TerrainY(terrain,EntityX(Spieler),EntityY(Spieler),EntityZ(Spieler)),EntityZ(spieler)
   

   
    If KeyDown(205) Then ro=ro-1
   If KeyDown(203) Then ro=ro+1

   PositionEntity cam,EntityX(Spieler),EntityY(Spieler),EntityZ(Spieler)
   MoveEntity cam,0,0,-dis#

   RotateEntity cam,ry,ro,0
   RotateEntity Spieler,ry,ro,0   ;

   If KeyDown(205)=1 Then TurnEntity cam,0,-1,0
   If KeyDown(208)=1 Then MoveEntity cam,0,0,-0.25
   If KeyDown(208)=1 Then MoveEntity Spieler ,0,0,-0.25
   If KeyDown(208)=1 And Animating(Spieler)=0 Then
   
   Animate Spieler,3,.2,1,0
   
   EndIf
   
   
   x#=EntityX(cam)
   y#=EntityY(cam)
   z#=EntityZ(cam)

   terra_y#=TerrainY(terrain,x#,y#,z#)+5
 
   PositionEntity cam,x#,terra_y#,z#
   

   If KeyDown(200)=1 Then
   
   MoveEntity Spieler ,0,0,0.25
   End If

   If KeyDown(200)=1 And (EntityCollided(Spieler,objekt)=0 And EntityCollided(Spieler,landschaft)=0) Then
   MoveEntity cam,0,0,0.25
   Else
   MoveEntity cam,0,0,0
   End If


   If KeyDown(200)=1 And Animating(Spieler)=0 Then
   Animate Spieler,3,0.2,1,0
   ElseIf KeyDown(29)=1 And Animating(Spieler)=0 Then
   Animate Spieler,3,0.2,2,0
   ElseIf KeyDown(56)=1 And Animating(Spieler)=0 Then
   Animate Spieler,3,.2,3,0
   End If
   
   If KeyDown(17)=1 Then WireFrame 1  ;Taste w
   If KeyDown(31)=1 Then WireFrame 0  ; Taste s
   If KeyDown( 60 )=True Then zoom#=zoom#-0.1 
   If KeyDown( 59 )=True Then zoom#=zoom#+0.1
   If KeyDown(61)= True Then leiste=1
   If KeyDown(62)=True Then leiste=0

 
   If zoom#<1 Then zoom#=1
   If zoom#>100 Then zoom#=100

   CameraZoom cam,zoom#
   PositionEntity sky,EntityX(cam),EntityY(cam),EntityZ(cam)
   UpdateWorld

   RenderWorld

   ;menü
   ;If leiste=1 Then
   ;Else
   ;End If

   Color (0),(255),(0)
   Rect MouseX(),MouseY(),20,20

   ;FPS
   frames=frames+1
   If MilliSecs()-render_time=>1000 Then fps=frames : frames=0 : render_time=MilliSecs()   
   Text 0,0,fps
    Text 0,10, "Zeit:" + time
    Flip
   Wend
   ClearWorld

   End Function
End
   
 

egiman

Betreff: Spieler bewegt sich nicht

BeitragDi, Sep 27, 2005 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

versuche es mal in dieser Form

ex#=EntityX(Spieler):ez#=EntityZ(Spieler)
ypos#=TerrainY(terrain,ex,0,ez)

If KeyDown(200)=1 Then
PositionEntity Spieler,ex,ypos,ez; Spieler erst auf Terrainhöhe bringen,dann bewegen
MoveEntity Spieler ,0,0,0.25
End If

Klaus
 

timo_81

BeitragDi, Sep 27, 2005 16:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Bringt leider nichts Sad
Trotzdem Danke!
 

egiman

Betreff: Treppen und Steigungen

BeitragDi, Okt 04, 2005 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich habe mich am Wochenende mit dem gleichen Problem wie du rumgeschlagen.

Jetzt funktioniert es.


BlitzBasic: [AUSKLAPPEN]



Const TYPE_PLAYER=1,TYPE_BULLET=2,TYPE_TARGET=3

Const TYPE_SCENERY=2,TYPE_TERRAIN=11


Collisions TYPE_PLAYER,TYPE_SCENERY,2,3
Collisions TYPE_PLAYER,TYPE_TERRAIN,2,3


in der main
y_vel#=0
If EntityCollided( Ritter\man,TYPE_SCENERY ) ;das ist die Burg mit der Schräge
y_vel#=0.025 ; langsam rauf
Else
If EntityCollided( Ritter\man,TYPE_TERRAIN )
y_vel#=0
Else
y_vel#=-0.8 ; schnell runter
EndIf
EndIf





MoveEntity Ritter\man, 0,0,-aStep
TranslateEntity Ritter\man,0,y_vel,0


;Es ist noch nicht perfekt, aber funktioniert.


Wichtig: Alle PositionEntity Spieler entfernen, denn dadurch setzt du ihn immer wieder auf den Boden zurück.
 

timo_81

BeitragFr, Okt 07, 2005 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke ,ich werd es versuchen ... ich hatte Probleme mit meinem
Rechner , deshalb die leicht verspätete Antwort.
 

timo_81

BeitragFr, Okt 07, 2005 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
gibt irgenwie murks bei mir Sad

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group