|
Veckans uppgift i spel projektet var att programmera ett system för powerups. Min första plan var att göra en base klass med alla olika powerup child klasser för att lättare hantera deras funktioner i player entity klassen. Två av spelets powerups är en kanon och en harpun som kräver projektiler för att användas. skulle hantera deras funktioner så som kollision och rörelse i powerup child klasserna. Efter konsulterade med Tommie angående vilka system vi behövde ha i spelet för att få det fullt funktionellt, hur dessa system skulle kommunicera med varandra och hur de är beroende av varandra ändrade jag upplägget på hur jag skulle gå tillväga med det. Eftersom highscoren är beroende av de fiender som dödas med hjälpa av powerups så behövde jag ett effektivt system där vapnen i spelet kommunicerade med projektilerna, spelar objetet och klassen som hanterar highscoren på ett effektivt och strukturerat sätt. Därför gjorde jag om systemet till att jag har en powerup manager som håller i vapnen, projektilerna och samtidigt rapporterar till highscore managern när en av projektilerna har träffat en fiende och ska ge mer poäng. I powerup managern finns en array med alla projektiler som existerar i scenen, en pointer till powerup vapnets klass som är aktiv och en pointer till spelar objektet. I själva projektil objektet finns bara spriten, collidern och hastigheten som variabler för att all förflyttning och kollision kollas och sker i managers update funktion. Eftersom en powerup i spelet enbart ska vara användbart under ett visst tidsintervall så finns minskar en timer i powerup managern och när den går ner till noll tas vapnet bort och spelaren återgår till sin ursprungliga state. Den sista typen av powerup som finns tillgängligt är en rom flaska som är tänkt att sakta ner spelets runtime till slow motion under en viss begränsad tid för att spelaren ska kunna få mera tid på sig att utföra sin strategi. Men den gör också skärmen suddig och skakig för att simulera att spelaren är “full”. Därför behöver också powerup managern tillgång till scenens kamera klass och tids manager för att kunna påverka alla icke statiska objekts hastighet så de stämmer överens med spelarens egna tids skala. I systemet använder jag mig av polymorfism principen med en base klass för alla olika objekten som tillhör samma kategori för att kunna använda en variabel för flera olika objekt. Detta underlättar under spelets run time då de olika objekten har nästan identiska funktioner som behöver kallas på i update. Det arbete som resterar denna vecka är att göra klart slow motion powerup och att koppla kameran till powerup managern för att de ska kunna kommunicera med varandra.
About Håkan Johannsson
2015 Programming
|