Vecka åtta: Rainbow Asteroid

Denna veckas spännande artefakt har varit regnbågsasteroiden. Regnbågsasteroiden är en asteroid som är regnbågsfärgad och kommer att skapas slumpmässigt på nivån. När spelaren skjuter sönder den så kommer den att röja bort alla fiender (utom bossen), de andra asteroiderna, fiendernas skott och spelarens skott. Medan detta händer så kommer en chockvåg skickas ut ifrån regnbågsasteroiden för att symbolisera att den fungerar som en ‘screen clear’.

Jag började med att skapa en klass för regnbågsasteroiden som är baserad på den vanliga asteroidklassen. Anledningen till att jag använde den vanliga asteroidklassen som en mall för regnbågsasteroidens klass är för att de båda kommer att fungera nästan likadant, förutom att asteroiden förstörs bara medan regnbågsasteroiden kommer att rensa skärmen på motståndare. Det enda som har ändrats är att regnbågsasteroiden har nu en bool som tittar om asteroiden har blivit aktiverad (träffad av spelarens skott) samt en funktion som returnerar boolen. Samt så har ‘kill’ funktionen ändrats så att den sätter aktiv boolen till sann första gången som den blir kallad och sätter liv boolen till falsk den andra gången som den blir träffad. Liv boolen är till för att våran ‘AsteroidManager’ ska hålla koll på vilka objekt som ska förstöras och finns i nästan alla våra entiteter. Och inne i ‘AsteroidManager’ så skapas ett regnbågsasteroids objekt samt två animationsobjekt, en för regnbågsasteroiden och en för chockvågen som skapas när regnbågsasteroiden sprängs. Anledningen till att animationerna är i ‘AsteroidManager’ är för att minska antalet kopplingar mellan klasser.

rainbowAsteroid
Regnbågsasteroid när den är hel. Vanlig asteroid till höger om den.

 

I uppdateringsfunktionen i ‘AsteroidManager’ så skapas det en ny regnbågsasteroid slumpmässigt, så länge som de inte finns en levande regnbågsasteroid för tillfället. När en regnbågsasteroid skapas så får den en slumpmässig position samt en slumpmässig hastighet, vilket gör att spelaren kommer inte kunna veta vart ifrån regnbågsasteroiden kommer att komma. Regnbågsasteroiden uppdateras beroende på vilket stadium den befinner sig i, vilka är:  Levande och inte träffad, levande och träffad samt död och träffad. När regnbågsasteroiden är levande och inte träffad så åker den på skärmen från en kant till en annan tills den är utanför skärmen, precis som de vanliga asteroiderna. Om regnbågsasteroiden är levande och träffad så slutar den att åka runt samt så ritas explosions animationen ut, istället för regnbågsasteroiden, medan den skalas upp till femti gånger så stor storlek samt så ändras en ‘clear’ bool till sant. När animationen har blivit femti gånger större så ändras regnbågsasteroiden från levande till död, vilket gör att regnbågsasteroiden förstörs och alla värden som ändrades när den blev träffad ändras tillbaka till sina ursprungliga värden.

rainbowExplosion
Bild på explosions animationen.

När ‘clear’ boolen är sann i ‘AsteroidManager’ så kallar ‘GameState’ på alla ‘clear’ funktioner som finns i de managers som ska ta bort objekt ifrån skärmen. Genom att göra så här så slipper man att koppla ‘AsteroidManager’ till de övriga managerna, men skapar en funktion för just detta enda mål i ‘AsteroidManager’.

Annonser
Vecka åtta: Rainbow Asteroid

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut /  Ändra )

Google+-foto

Du kommenterar med ditt Google+-konto. Logga ut /  Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut /  Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut /  Ändra )

w

Ansluter till %s