und habe dann zwecks Lesbarkeit versucht Funktionen zu nehmen...
Nun kommt öfter der Fehler Entity not found ... obwohl ich die
entity (hier: Spielfigur) Global definiert hab...
Ich hab extra den Spieler und die Cam aus der Funktion herausgenommen
um sie global definieren zu können aber trotzdem führt
der PositionEntity Befehl in der MainLoop zum oben genannten Fehler.
Ich habe hier den gesamten Code mal gepostet für die Leseratten
unter euch:
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN] Init_3D()
Global cam=CreateCamera() Global Spieler=LoadAnimMesh(\"C:\3DSpiel\models\dwarf1.b3d\" ) dis#=10
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=LoadTerrain(\"C:\3DSpiel\texturen\heightmap.bmp\") 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,256,256,256 ScaleTexture terrain_layer1,50,50 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
plane=CreatePlane() himmel=LoadTexture(\"C:\3DSpiel\texturen\sky.jpg\",12 )
EntityTexture plane,himmel ScaleTexture himmel,2000,2000 EntityFX plane,1 PositionEntity plane,0,850,0 plane=CopyEntity( plane ) RotateEntity plane,0,0,180 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 light=CreateLight() TurnEntity light,45,45,0 MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 landschaft=1 objekt=2 player=3 gegner=4 schalter=5
End Function
Function Create_Objects()
castle=LoadMesh(\"C:\3DSpiel\models\castle1.x\") castle_texture=LoadTexture(\"C:\3DSpiel\texturen\burg.jpg\") PositionEntity castle,800,247,820 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_Player()
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,1 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) 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 If KeyDown(31)=1 Then WireFrame 0 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# UpdateWorld
RenderWorld
Color (0),(255),(0) Rect MouseX(),MouseY(),20,20
frames=frames+1 If MilliSecs()-render_time=>1000 Then fps=frames : frames=0 : render_time=MilliSecs() Text 0,0,fps Flip Wend ClearWorld
End Function End
|