Child Problem bei Turnentity

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Firstdeathmaker

Betreff: Child Problem bei Turnentity

BeitragMo, Aug 30, 2004 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich bastel gerade an einem kleinen Weltraumshooter (aus Lernzwecken) und baue gerade die möglichkeit ein, Schüsse abzugeben. Um die Erscheinungsposition der Schüsse festzulegen habe ich einfach an das Raumschiffmesh 3 leere Meshes gehängt, welche sozusagen die Erscheinungspositionen beeinhalten. Wenn ich jetzt einen Schuss erscheinen lassen will, gebe ich jetzt einfach
Code: [AUSKLAPPEN]
PositionEntity schuss\mesh,EntityX(player\schussr,0),EntityY(player\schussr,0),EntityZ(player\schussr,1)
an.

schussr ist in diesem Fall das leere Mesh welches ich an das Raumschiff Mesh angehängt habe. So lange ich das Raumschiff mesh mit moveentity in z Richtung nach vorne bewege geht auch alles gut, aber sobald ich das Raumschiff drehe verschieben sich die leeren Meshes nicht mehr mit und die Schüsse erscheinen an unlogischen Stellen.

Hier der Code:
Code: [AUSKLAPPEN]
Const SCREEN_X=1024
Const SCREEN_Y=768

Graphics3D SCREEN_X,SCREEN_Y,16,2
SetBuffer BackBuffer()

Type player
   Field Mesh
   Field camera
   Field Name$
   Field schubkraft#
   Field aktuell_speed#
   Field max_speed#
   Field schussh
   Field schussr
   Field schussl
End Type
Global player.player

Type planet
   Field Mesh
   Field turnspeed#
   Field turnspeed2#
End Type
Global planet.planet

Type schuss
   Field Mesh
   Field Speed#
   Field livetime#
End Type

SeedRnd MilliSecs()


player.player=New player
player\Mesh=LoadMesh("Meshes\Fighter3.X")
player\camera=CreateCamera(player\Mesh)
CameraRange player\camera,0.1,10000
CameraFogMode player\camera,1
CameraFogRange player\camera,1000,10000
PositionEntity player\camera,0,1,-3
player\name="Christian"
player\schubkraft=0.01
player\max_speed=10
player\schussh=CreateMesh(player\mesh)
PositionEntity player\schussh,0,0,0.1
player\schussr=CreateMesh(player\mesh)
PositionEntity player\schussr,1,0,-1
player\schussl=CreateMesh(player\mesh)
PositionEntity player\schussl,-1,0,-1



anzahl_planeten=6
Dim planet_tex(anzahl_planeten)
For i=0 To anzahl_planeten-1
   planet_tex(i)=LoadTexture("GFX\planet"+Rand(1,anzahl_planeten)+".jpg")
Next


For i=0 To 10
   dimension=5000
   planet.planet=New planet
   planet\Mesh=CreateSphere (20)
   scalefactor#=Rnd(50,100)
   EntityTexture planet\mesh,planet_tex(Rand(0,anzahl_planeten-1))
   ScaleEntity planet\mesh,scalefactor,scalefactor,scalefactor
   PositionEntity planet\mesh,Rnd(-dimension,dimension),Rnd(-dimension,dimension),Rnd(-dimension,dimension)
   planet\turnspeed=Rnd(0.01,0.1)
   planet\turnspeed2=Rnd(0.001,0.01)
Next

BG_music=PlayMusic("Music\game"+Rand(1,4)+".mp3")



AmbientLight 255,255,255



While ende=0
;Steuerung
player=First player
If KeyDown(42) And player\aktuell_speed<player\max_speed player\aktuell_speed=player\aktuell_speed+player\schubkraft
If KeyDown(29) And player\aktuell_speed>0 player\aktuell_speed=player\aktuell_speed-player\schubkraft
If KeyDown(200)   TurnEntity player\Mesh,1,0,0
If KeyDown(208)   TurnEntity player\Mesh,-1,0,0
If KeyDown(203)   TurnEntity player\Mesh,0,0,1
If KeyDown(205)   TurnEntity player\Mesh,0,0,-1
If KeyDown(74)   MoveEntity player\Camera,0,0.1,-0.3
If KeyDown(78)   MoveEntity player\Camera,0,-0.1,0.3

If KeyHit(57) createshuss()


   
MoveEntity player\mesh,0,0,player\aktuell_speed
For schuss.schuss=Each schuss
   MoveEntity schuss\mesh,0,schuss\speed,0
   schuss\livetime=schuss\livetime-0.1
   If schuss\livetime<0
    FreeEntity schuss\mesh
    Delete schuss.schuss
   EndIf
Next

For planet.planet=Each planet
   TurnEntity planet\mesh,0,planet\turnspeed,planet\turnspeed2
Next

RenderWorld()

Text 10,10,player\aktuell_speed
Flip

Wend


Function createshuss()
   schuss.schuss=New schuss
   schuss\mesh=CreateCylinder()
   EntityColor schuss\mesh,255,255,0
   ScaleEntity schuss\mesh,0.05,0.05,0.05
   TurnEntity schuss\mesh,EntityPitch(player\mesh),EntityYaw(player\mesh),EntityRoll(player\mesh)
   TurnEntity schuss\mesh,90,0,0
   
   PositionEntity schuss\mesh,EntityX(player\schussh,0),EntityY(player\schussh,0),EntityZ(player\schussh,1)
   
   schuss\speed=player\aktuell_speed+1
   schuss\livetime=10
   
   schuss.schuss=New schuss
   schuss\mesh=CreateCylinder()
   EntityColor schuss\mesh,255,255,0
   ScaleEntity schuss\mesh,0.05,0.05,0.05
   TurnEntity schuss\mesh,EntityPitch(player\mesh),EntityYaw(player\mesh),EntityRoll(player\mesh)
   TurnEntity schuss\mesh,90,0,0
   
   PositionEntity schuss\mesh,EntityX(player\schussr,0),EntityY(player\schussr,0),EntityZ(player\schussr,1)
   
   schuss\speed=player\aktuell_speed+1
   schuss\livetime=10
   
   schuss.schuss=New schuss
   schuss\mesh=CreateCylinder()
   EntityColor schuss\mesh,255,255,0
   ScaleEntity schuss\mesh,0.05,0.05,0.05
   TurnEntity schuss\mesh,EntityPitch(player\mesh),EntityYaw(player\mesh),EntityRoll(player\mesh)
   TurnEntity schuss\mesh,90,0,0
   
   PositionEntity schuss\mesh,EntityX(player\schussl,0),EntityY(player\schussl,0),EntityZ(player\schussl,1)
   
   schuss\speed=player\aktuell_speed+1
   schuss\livetime=10
End Function
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

INpac

BeitragMo, Aug 30, 2004 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutz erstmal anstatt CreateMesh() die schonendere CreatePivot()-Function

Firstdeathmaker

BeitragMo, Aug 30, 2004 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, geändert. Aber das Problem besteht immer noch.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group