OK but... I use clearworld() after that intro screen... AND during the intro screen there are only two tris created (the sprite I .PNG to fade in to the intro...) and if I clearworld() and don't create the camera a second time I see nothing...
; ########################################### THIS CODE IS NOT INDENTED AND IS VERY HARD TO READ
; VERY MESSY.
Graphics3D 640,480,16,0
SetBuffer BackBuffer()
light=CreateLight(1)
AmbientLight 60, 60, 50
aimer=CreateCamera() ; CREATE INITIAL CAMERA
PositionEntity aimer,20,2,20
HidePointer
Global set = 0
h=CreatePivot()
PositionEntity h,20,2,40
Global power=1
Global gun_timer=MilliSecs() ; timer to track the difference in millisecs
Global gun_time=450 ; time in milliseconds that the gun will fire
; lower numbers make the gun spit bullets like a firehose... try 250
Global ammo
Global score
; ################################################ CHANGED THIS FOR MORE FREE FIRE
Type bullet ; CREATE a type called bullet
Field entity ; gives us a bulet name
Field speed# ; How FAST it will go
Field range ; How long to keep it on the screen
Field pivot ; An AID to AIMING
End Type
;
; We don't actually fill this TYPE in yet since we are going to create
; bullets "on the fly" so to speak (as we need them.)
; We could ALSO do the same thing for our targets so we could reposition
; them later and make this a real (simple) game.
;
While Not KeyHit(28) ; ENTER BUTTON
Print "hi Mom!"
Wend
FlushKeys
ClearWorld() ; ############################################ REM THIS OUT and the next two leave out
; and it won't show
; ENTITY DOES NOT EXIST
;
; Rem it out and UNREM the next two lines
; and double render
;
; UNREM the next two and LEAVE clearworld()
; UNREMed and all works good...
;
; NO DOUBLE CAMERA
;aimer=CreateCamera()
;PositionEntity aimer,20,2,20
aim=LoadImage("aimpoint2.png")
Global bullet=CreateSphere(32)
EntityType bullet,1
PositionEntity bullet,20,2,20
EntityColor bullet,222,255,222
ScaleEntity bullet,Rand(1,2),Rand(1,2),Rand(1,2)
plane=CreatePlane(2)
EntityColor plane,0,0,255
EntityShininess plane,62
EntityType plane,1
bottle=CreateCylinder(40)
PositionEntity bottle,20,0,50
ScaleEntity bottle,1,2,1
EntityRadius bottle, 2
EntityType bottle, 1
turn = 1 ; make the cylinder rotate
; ######################### SET COLLISIONS SO WE CAN SEE IF WE HIT
Collisions 1,2,2,1
Collisions 2,1,2,1
ammo = 20 ; number of bullets
While Not KeyDown(1)
update_bullet()
check_collide()
If MilliSecs()>gun_time+gun_timer Then ShowEntity bullet
If MilliSecs()<gun_time+gun_timer Then HideEntity bullet
; ########################### TO KEEP THE BOTTLE TURNING ONE DIRECTION
If turn = 1 Then
turning = 1
tilt = tilt - 1
If tilt >= 370
turn = 2
EndIf
EndIf
If turn = 2 Then
turning = -1
tilt = tilt - 1
If tilt <= 350
turn = 1
EndIf
EndIf
If turn =1 = True Then TurnEntity bottle,0,0,turning
If turn =2 = True Then TurnEntity bottle,0,0,turning
; ############################# I DIDN'T WRITE THIS PART... WORKS THOUGH
mxs#=MouseXSpeed()/4 ; used to get mouse movement and thus AIM
mys#=MouseYSpeed()/4
xa#=(xa#-mxs#)Mod 360
ya#=(ya#+mys#)Mod 360
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
RotateEntity aimer,ya#,xa#,0
If KeyDown( 201 )=True Then power=power+1 ; PAGE UP power up FASTER bullets
If KeyDown( 209 )=True Then power=power-1 ; PAGE DOWN power down SLOWER bullets
If power <= 1 Then
power = 1
EndIf
If power >= 12 Then
power = 12
EndIf
If KeyHit(57) = True Then ; SPACEBAR to fire
gun_timer=MilliSecs() ; reset the bullet timer
create_bullet(aimer) ; call function to create a bullet. Pass across the aimer entity to the function
; so the bullet can come from the guns position
EndIf
UpdateWorld()
RenderWorld()
DrawImage aim,297,227
Rect 70,15,powerful,5
Text 10,10,"Power:"
Text 10,30,"Energy: " + power
Text 10,70,"Rocks Left: " + ammo
Text 10,90,"SCORE: "+score
check_collide()
Flip
Wend
End
; ################################# FUNCTIONS
Function create_bullet(gun_entity) ; this creates a bullet at the aimer
If ammo = 0 Then Return ; no bullets go away!
ammo = ammo - 1
HideEntity bullet ; hide old entity
b.bullet=New bullet ; make a new bullet entity
temp_x=EntityX(gun_entity,True)
temp_y=EntityY(gun_entity,True)
temp_z=EntityZ(gun_entity,True)
b\entity=CopyEntity(bullet)
b\pivot=CreatePivot()
PositionEntity b\entity,temp_x,temp_y,temp_z
EntityType b\entity,2
RotateEntity b\entity,EntityPitch(gun_entity,True),EntityYaw(gun_entity,True),0
PositionEntity b\pivot,temp_x,temp_y,temp_z
b\range = 250 ; set bullet range so it does not clutter the screen (I used power but usually set it at 200 - 300
b\speed = power ; set initial bullet speed
End Function
Function update_bullet()
For b.bullet = Each bullet ; move every bullet fired
MoveEntity b\entity,0,0,b\speed
If EntityDistance#(b\entity,b\pivot) > b\range Then
FreeEntity b\entity
FreeEntity b\pivot
Delete b.bullet
End If
Next
End Function
Function check_collide()
For b.bullet = Each bullet
If EntityCollided(b\entity,1) Then ;since our bottle is a 1
HideEntity b\entity
score = score +10
FreeEntity b\entity
FreeEntity b\pivot
Delete b.bullet
EndIf
Next
; this function could be reversed to hide the bottle and place a new bottle in a new location
; simply by a small change of code...
End Function
See what I mean... Clearworld() has gotten rid of all entities created (including camera and quite possibly light too!
RZ