Every game needs an objective. In our game, the hero needs to the top of the platforms to reach the flashing star.
We don't have a star asset, so I've provided one below:
Right and click this image and save it as “star.png” in the data/texture
folder in our project.
Create a object section for this star and position it at the top right hand platform:
[StarGraphic] Texture = star.png [StarObject] Graphic = StarGraphic Position = (290, -260, 0)
Add the star to the Scene section's child list so that it is created when the platforms are:
[Scene] ChildList = PlatformObject # MiddlePlatformObject # TopLeftPlatformObject # TopPlatformObject # TopRightPlatformObject # StarObject
Run the game and you will have a star in the top right hand corner:
It will be nice if the star pulses colour and slowly turns. We can use two FXSlot sections for this:
[StarFlashSlotFX] Type = color Curve = sine StartTime = 0 EndTime = 1 Absolute = true StartValue = (255,0,0) EndValue = (255,255,0) [StarRotateSlotFX] Type = rotation Curve = linear StartTime = 0 EndTime = 2 StartValue = 0 EndValue = 359
Now group the two slots under one FX section:
[StarFX] SlotList = StarFlashSlotFX # StarRotateSlotFX KeepInCache = true Loop = true
The FX section will be in charge of ensuring they stay in memory and that they both loop.
Add the FX to the StarObject:
[StarObject] Graphic = StarGraphic Position = (290, -260, 0) FXList = StarFX
Cool. Run that and the star should turn and flash.
The only problem is that the turning pivot for the star is a little off. Fix that on the StarGraphic:
[StarGraphic] Texture = star.png Pivot = center
Run that. And it will turn nicely.
One more tweak, a minor detail: As the sprite is turning, there are some jaggies. Smooth them out my applying Smoothing
to the StarObject
:
[StarObject] Graphic = StarGraphic Position = (290, -260, 0) FXList = StarFX Smoothing = true
Run that and you should get:
Great! Next, is to make the hero collide with the star in order to win the game.
The star object will need a static body, with a solid body part:
[StarBody] Dynamic = false PartList = StarBodyPart [StarBodyPart] Type = box Solid = true SelfFlags = star CheckMask = hero
And add the body to the StarObject
:
[StarObject] Graphic = StarGraphic Position = (290, -260, 0) FXList = StarFX Smoothing = true Body = StarBody
We've also declared flags to make sure that we only care if the star collides with the hero and nothing else.
We will set that collision up in a moment.