Shooter problems....
Blitz3D Forums/Blitz3D Programming/Shooter problems....
| ||
Hmm Seem to be having a problem with my code. When I run it, the bullets stop about 2 seconds after they have been fired. Will I have to use types or something? ;;;;;;;;;;;;;;;;;;;;; While Not KeyHit(1) updatebullet If KeyDown (203) Then TurnEntity player,0,0.75,0 ;turn player left If KeyDown(205) Then TurnEntity player,0,-0.75,0 ;turn player right If KeyDown(200) Then playerspeed=playerspeed+0.1 ;speed up player If KeyDown(208) Then playerspeed=playerspeed-0.1 ;slow down player If KeyDown(30) Then MoveEntity player,0,0.5,0 MoveEntity cam,0,0.5,0 ;move player up If KeyDown(44) Then MoveEntity player,0,-0.5,0 MoveEntity cam,0,-0.5,0 ;move player down If playerspeed>3 Then playerspeed=3 If playerspeed<1 Then playerspeed=1 If KeyHit(45) Then spark=CreateSphere(10) EntityAlpha spark,0.7 EntityColor spark,255,100,20 PositionEntity spark,EntityX#(player),EntityY#(player),EntityZ#(player) TurnEntity spark,0,EntityYaw(player),0 EndIf MoveEntity player,0,0,playerspeed MoveEntity spark,0,0,playerspeed+2 sparktimer=sparktimer+1 smoothcam(piv,player,70) if entitycollided(player,nodec) print "<< You got a node! >>" nodes=nodes+1 endif RenderWorld UpdateWorld Flip wend End ;;;;;;;;;;;;;;;;;;;;;; |
| ||
Well, i'd use types for bullets :) Means you can have more than one bullet on-screen with little hassle. About your bullet stopping. It might be becaus your trying to fire more than one, and the bullet is getting reset back to it's start position. Try this out. I know it probably isn't what your game does, but should give you an idea of what to do. Need to rush now, so i'll comment it when i get back :D Arrow keys to turn and move, X or Z to shoot...i forget :D Graphics3D 800,600 SetBuffer BackBuffer() Global camera=CreateCamera() PositionEntity camera,0,0,-40 Global light=CreateLight() Global main_bullet=CreateSphere() ScaleEntity main_bullet,1,0.2,0.2 HideEntity main_bullet Global player=CreateSphere() ScaleEntity player,2,0.5,0.5 EntityColor player,50,50,200 Global playerspeed#=0 Type bullet Field ent Field x#,y#,z# Field speed# Field time Field timer End Type While Not KeyHit(1) If KeyDown (203) Then TurnEntity player,0,0,0.75 ;turn player left If KeyDown(205) Then TurnEntity player,0,0,-0.75 ;turn player right If KeyDown(200) Then playerspeed=playerspeed+0.003 ;speed up player If KeyDown(208) Then playerspeed=playerspeed-0.003 ;slow down player ;If KeyDown(30) Then MoveEntity player,0,0.5,0 MoveEntity cam,0,0.5,0 ;move player up ;If KeyDown(44) Then MoveEntity player,0,-0.5,0 MoveEntity cam,0,-0.5,0 ;move player down If playerspeed>0.1 Then playerspeed=0.1 If playerspeed<0 Then playerspeed=0 If KeyHit(45) Then createbullet(player) EndIf MoveEntity player,playerspeed,0,0 ;MoveEntity spark,0,0,playerspeed+2 ;sparktimer=sparktimer+1 ;smoothcam(piv,player,70) ;If EntityCollided(player,nodec) ;Print "<< You got a node! >>" ;nodes=nodes+1 ;EndIf updatebullet() RenderWorld UpdateWorld Flip Wend End Function createbullet(player) b.bullet=New bullet b\ent=CopyEntity (main_bullet) b\x=EntityX(player) b\z=EntityZ(player) b\y=EntityY(player) TurnEntity b\ent,0,0,EntityRoll(player) PositionEntity b\ent,b\x,b\y,b\z b\speed=0.2 b\time=3000 b\timer=MilliSecs() End function Function updatebullet() For b.bullet=Each bullet MoveEntity b\ent,b\speed,0,0 If MilliSecs()>b\time+b\timer Then FreeEntity b\ent Delete b.bullet End If Next End Function |
| ||
Thanks, I really needed some help with this. |