====== Futurama Appearance Effect ======
This tutorial will teach you how to create a warp appearance effect like at the start of the Futurama title sequence. The effect will look something like this:
{{ :tutorials:spawners:futurama.gif?direct |}}
In order to make this, you will need three simple things: an object like a ship, a blue spike, and a flat ball:
{{tutorials:physics:ship.png?direct|}} {{:tutorials:spawners:warp-spine.png?direct|}} {{:tutorials:spawners:glow-bubble.png?direct|}}
Begin by creating the alien ship on screen:
[Alien]
Graphic = AlienGraphic
Position = (0, 0, 0.5)
ChildList = WarpAppearance
[AlienGraphic]
Texture = ship.png
Pivot = center
Notice the ''WarpAppearance'' object added to the child list. This is where the appearance affects will be added. Whenever an instance of an alien ship is created, a nice appearance effect will show with it.
Define ''WarpAppearance'' with:
[WarpAppearance]
AngularVelocity = 100
ChildList = WarpSpineMaker
LifeTime = 4
''WarpAppearance'' is just an empty object that is turning. This object will only live for 4 seconds, then it will die. Attached to this (as a child) is ''WarpSpineMaker''.
Create ''WarpSpineMaker'' with:
[WarpSpineMaker]
Spawner = WarpSpineSpawner
Position = (0, -3, 0)
[WarpSpineSpawner]
Object = WarpSpine
ActiveObject = 40
WaveSize = 5
WaveDelay = 0.1
CleanOnDelete = true
UseSelfAsParent = true
''WarpSpineMaker'' has a spawner defined (''WarpSpineSpawner''). ''WarpSpineSpawner'' will spawn loads of ''WarpSpine'' objects, which are the blue spike texture as above.
[WarpSpine]
Graphic = @
Texture = warp-spine.png
Pivot = (17, 202, 0)
AngularVelocity = -200 ~ 200
FXList = FadeInOutFX
LifeTime = 1.0
This is the interesting part. Each ''WarpSpine'' object that is spawned by ''WarpSpineSpawner'' has a low centered pivot point and a random spin value. Each only lives for a second, but this gives a "filtered light" effect. To smooth the appearance in and out of each object, a ''FadeInOutFX'' is defined:
[FadeInOutFX]
SlotList = FadeInOutFXSlot
KeepInCache = true
Loop = false
[FadeInOutFXSlot]
Type = alpha
Curve = sine
StartTime = 0.0
EndTime = 4.0
StartValue = 0.0
EndValue = 1.0
Absolute = true
Add a small piece of object creation code to your project's ''init()'' function:
orxObject_CreateFromConfig("Alien");
Compile and run. The ship will appear with a dazzling array of blue spines surrounding it.
For a minor enhancement, we'll also spawn some randomly coloured balls to act as a type of lens flare. Change the ''WarpAppearance'' to include a child called ''BubbleCreator'':
[WarpAppearance]
AngularVelocity = 100
ChildList = WarpSpineMaker # BubbleCreator
LifeTime = 4
And it is defined as:
[BubbleCreator]
Spawner = BubbleSpawner
LifeTime = 3
[BubbleSpawner]
Object = Bubble
ActiveObject = 24
WaveSize = 2
WaveDelay = 0.1
UseRelativeSpeed = true
''BubbleCreator'' only lives for 3 seconds in total and has a spawner called: ''BubbleSpawner''. It in turn spawns objects called ''Bubble'':
[Bubble]
Graphic = @
Texture = glow-bubble.png
LifeTime = 1
Speed = (-250, -250, 0) ~ (250, 250, 0);
Scale = 0.5 ~ 1.0
Pivot = center
HSV = (0.0, 1.0, 1.0) ~ (1.0, 1.0, 1.0)
FXList = FadeAwayFX
These shoot away in random directions, have a random colour and size. They also fade nicely away with ''FadeAwayFX'', which we'll define here:
[FadeAwayFX]
SlotList = FadeAwayFXSlot
KeepInCache = true
Loop = false
[FadeAwayFXSlot]
Type = alpha
Curve = linear
StartTime = 0.0
EndTime = 0.5
StartValue = 1.0
EndValue = 0.0
Period = 0.5
Absolute = true
Run that and the alien will appear in a wash of blue spikey light and coloured flares.