This code has been declared by its author to be Public Domain code.
I'm totally confused how this works.
You create a pivot, assign the camera to the pivot, and then you create a sprite of the camera?
This must be some advanced programming technique which my simple mind cannot understand :)
I think I understood what it's good for though, you can fade a whole scene with one EntityAlpha command in and out?
I would have done an scene fade in/out so, that I display a huge flat wall right in the front of the camera, and then EntityAlpha that flat wall in and out. Or change the fog range until 0. But I guess your method is better?
Nice one Ben(t) ! I would use different keys though, because + and - are not always located at the same place on each pc keyboard, and may confuse the users.
Use 200 and 208 (up and down arrow) as keycode, for example:
If KeyDown(200) Then alpha#=alpha#+.01
If KeyDown(208) Then alpha#=alpha#-.01
@Lumooja,
he does not create 'a sprite of the camera', instead he creates a sprite parented to the camera. The command CreateSprite(cam) does exactly this.
In this way, the sprite named 'fade' will remain always attached to the camera, and by changing its alpha, you get the fading effect. Note that the sprite is colored black, so when its alpha = 1, you see a black screen, and when the alpha is 0, you see the 3D scene.
It's like a (black) fading glass screen in front of the camera, if you get the point.
Sergio.
to respond to lumooja that is exactly what the sprite is for
the sprite is a black square colored 0,0,0 and it is in front of the camera
the fog Idea also works but you have to wait for it to get to zero for a complete fade out this fades everything out in less time.
I would enable Flatshading and Fullbright, otherwise it won't be pure black if a light source is affecting it.
Shouldn't be necessary, Gfk: i think sprites are fullbright by default. Fullbright entities are always fully lit, regardless of light sources, therefore setting flatshading is unnecessary, too.
yeah sprites are always fullbright
yeah! its like im passing out!
hey that's not a bad Idea! I could color it red and when my character dies have it fade in!
just like the james bond games.
actually that sounds rather lame in retrospect, but I might use it for flash grenades
Wow thanks this is one of the only things in the code archives I actually understand! (I even learned a bit from it!)
And also... the fact that it is an exaple already and not just some function helps too :)
I've updated the fade out program so that it has a armor and health setup, whenever you get damaged then the screen flashes red.
it's still tweaky if anyone finds a better way to write the code let me know
Graphics3D 640,480,16,2
health=100
armor=100
SeedRnd MilliSecs()
CreatePlane()
pivot=CreatePivot()
cam=CreateCamera(pivot)
PositionEntity cam,0,5,-10,1
fade=CreateSprite(cam)
ScaleSprite fade,2,2
PositionEntity fade,0,0,1.1
EntityColor fade,255,0,0
cube=CreateCube()
ScaleEntity cube,5,.1,5
EntityColor cube,255,0,0
ball=CreateSphere(32)
MoveEntity ball,1,0,1
EntityColor ball,0,0,255
light=CreateLight()
MoveEntity light,5,8,5
While Not KeyHit(1)
If KeyHit(57) Then damage=Rnd(10)
now#=health+armor
If armor>0 Then
armor=armor-(damage *.75)
health=health-(damage *.25)
Else
health=health-damage
EndIf
If armor<0 Then armor=0
If health=<0 Then health=0
damage=0
later#=health+armor
If now# > later# Then alpha#=.75
If health>0 Then alpha#=alpha#-.01
If health > 0 Then
PointEntity cam,cube
TurnEntity pivot,0,1,0
EndIf
EntityAlpha fade,alpha#
RenderWorld
Text 0,0,health+" health"
Text 0,10,armor+" armor"
If alpha#>0 Then Text 320,240,"OW I'M HURT!!!"
If health=<0 Then
EntityColor fade,0,0,0
PositionEntity cam,0,1,-10,1
RotateEntity cam,0,0,90
alpha#=0
Text 0,20,"dead"
EndIf
Flip
Wend
End