Hab mein Prog aus Versehen gelöscht nun neu geschrieben...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

timo_81

Betreff: Hab mein Prog aus Versehen gelöscht nun neu geschrieben...

BeitragDo, Sep 22, 2005 1:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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]

Init_3D()

Global cam=CreateCamera() ;extra an den Anfang gesetzt
Global Spieler=LoadAnimMesh(\"C:\3DSpiel\models\dwarf1.b3d\" );..ebenso
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) ;!!!ZEILE DRUNTER FÜHRT ZUM FEHLER!!!
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#

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

Flip
Wend
ClearWorld

End Function
End

Xaron

BeitragDo, Sep 22, 2005 9:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Kein Wunder, er kennt die Variable "terrain" ja auch nicht, die wurde schließlich lokal in einer anderen Funktion angelegt...

Gruß - Xaron
Cerberus X - Monkey X Reloaded!
 

timo_81

BeitragDo, Sep 22, 2005 11:42
Antworten mit Zitat
Benutzer-Profile anzeigen
wie kann ich dann die Teile definieren ...Global geht ja in der Funktion nicht....
 

MegaTefyt

BeitragDo, Sep 22, 2005 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann deklarierst du es auch außerhalb der Funktion? Smile
 

timo_81

BeitragDo, Sep 22, 2005 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
ok mach ich
grüße
timo

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group