Power-up¶
Power-up'ide ja perk'ide eesmärk¶
Power-up on termin, mis viitab mängijale ajutise eelise andmisele. Power-up'ide lisamine muudab mängu vähem etteaimatavaks ning nende otsimist saab kasutada mängija suunamiseks läbima kindlaid mänguetappe.

Pacmanis “power pellet” annab Pacmanile võime vastaseid süüa.
Tavaliselt on power-up'idel ajapiiranguks:
konkreetne ajalimiit
mängija vigastada saamiseni
mängija surmani
kogu mängu või taseme lõpuni kestvat eelist nimetatakse perkideks. Perkidel on tihti hierarhia ehk kõrgema taseme perk'i saamiseks peab mängijal olema madalama taseme perk.

Payday's on perkid ostetavad, kuid tingimuseks odavama perki olemasolu.
Mõnikord lisatakse power-up'e põhiloost eraldi "boonusvoorudesse" koos lisa punktidega. Samuti võib power-up anda võime pääseda boonusvooru – näiteks lendamisvõime või üleüldse võime ligipääseda kohta, kuhu ilma lisavõimeta ei pääseks.

Metroid series’is Morph Ball annab läbipääsu tunnelitesse ja vahedesse, kus tavasuuruses ei mahuks.
Power-up'ide kujutamine¶
Levinum viis power-up'e kujutada: - konkreetse objektina (“söödana”), mida mängija saab korjata. - konkreetsete piirkondadega mängumaailmas. - preemiana vastase alistamise eest.

Super Marios power-upi kujutamine küsimärk-blokina, mis annab juurde üllatuse aspekti power-upi võimele.
Power-up'i mõju esiletõstmiseks on soovitatav kasutada visuaalseid või heliefekte, et nende toimimisele tähelepanu juhtida. Mida äratuntavam on power-up' võime selle avaldumise järgi, seda parem. Näiteks: - Mängija välimuse muutmine (näiteks sätendama/vilkuma panemine). - Tausta või mängukeskkonna muutmine (näiteks nähtavuse parandamine pimedas labürindis, kui varem oli nähtav vaid käidud rajad, siis power-up annab hetkeks täieliku vaate labürindist). - Spetsiifilised heliefektid (näiteks kiirendava power-up'i puhul muusika kiirendamine.

Super Marios power-upi mõju näitamine mängija suuruse muutmisega.
Tihtipeale omistatakse power-upidel otsekohene mõju (näiteks leiad tiivad ja saad siis lennata), kuid osades mängudes saab leitud power-upi panna power-upide ladusse (“Inventory’i”), mis annab mängijale vabaduse valida, millal power-up käivitada. Kui mängus on mitu erivõimega power-upi, on vaja otsustada, kas need tohivad toimida samal ajal. Kui ei, siis mitte anda võimalus selliseks olukorraks.

Gradius III selection bar power-upideks ehk vabadus ise valida power-upi aktiviseerimine.
Power-up'ide tüübid ja mõjud¶
1. Ründevõime:¶
Mängija suuruse muutmine, millega kaasneb füüsiliste võimete mitmekordistumise (näiteks laiem haare ja seetõttu rohkemate kahjustuste tegemine ühe käehoobiga).
Mängija hävitusjõu suurendamine (näiteks rohkem haavavate kahjustuste tegemine ühe mõõgalöögiga).
Relvade ja eri gadget'ite lisamine (näiteks põrkekuulid, laskemoona mahutavuse suurendamine).
![]() |
![]() |
Enne ja pärast power-upi, lisa gadget on lohe.
3. Kaitsevõime:¶
Kaitsekilbid (force field), mis ei lase mängijat kahjustada.
Mängija kloonimine segaduse tekitamiseks või NPC-de kaasamine samal eesmärgil.

Sonic the Hedgehog 2 kilp, mis tühistab vaenlasega kokkupõrkest tekkiva kahju.

Geometry Dash ogade kahjutuks tegemine.
4. Põiklemisvõime:¶
mängija kiiremaks tegemine või booster-plokid.
Nähtamatus või kamuflaaž (näitejst pappkastina maskeerumine). Soovitatav on mängijat mitte täiesti nähtamatuks teha, pigem vähendada läbipaistvust või jätta alles vaid mängija piirjooned.
Hüppevõime suurendamine või "matter surfing".
Näiteks Geometry Dashis on kiirenduse power-up booster-tsoonides. Geometry Dash video Youtubes
5. Tervise- ja eluvarud:¶
“Health bar”i pikkuse suurendamine.
Lisa elu "Extra life" või "1-up".
Ajalimiidi pikendamine mängudes, kus on ajapiirang.
![]() |
![]() |
Disney's Aladdinis lisaelu kujutamine südamete arvu kasvamisega.
6. Ajaga manipuleerimise (nii ründe- kui ka kaitsevõime):¶
Vastaste aeglustamine.
Kõigi peale mängija liikumatuks muutmine.
Power-down¶
Power-down'ide eesmärk on mängimist raskendada. Power-downide hulka kuulub: - Vastastele power-up'i andmine või mängija power-up'ide eemaldajad. - mängija haavamine või tapmine. - Kontrolli keerukamaks muutmine (näiteks ainult ühes suunas liikumise lubamine või vasakule ja paremale liikumise loogika vahetamine).
Power-downi kujutamine¶
Power-down'e võib kujutada samal viisil nagu power-up'e (näiteks booster-bloki asemel on mürgine ala), mis lisab üllatusmomenti, kuid sellega kaasneb oht, et mängija ei pruugi power-up'ide olemasolu avastada.

Super Mario mürgine seen, mis varastab mängijalt kas power-upi või tapab ta power-upi puudumisel.
Hüppe ja liikumise kahekordse kiirendamise power-upide loogika platformer-stiilis mängus¶
Box2D
füüsikamootoris on kaks olulist meetodit keha liikumiskiiruse muutmiseks: applyForce
ja applyLinearImpulse
. Peamine erinevus nende vahel seisneb mõju avaldumise ajastuses:
applyForce
rakendab jõudu järk-järgult, luues loomulikuma kiirenduse.
applyLinearImpulse
rakendab impulssi koheselt, muutes liikumist viivitamatult.
Kui mängus on power-upi objektid juba kujutatud ja kokkupõrke loogika loodud, siis järgmine samm on kokkupõrke korral käivitada vastava power-upi meetodi. Näiteks:
jumpPowerUpTimeLeft();
activateRunPowerUp();
Järgmine tegevus on ajutisele power-upile lisada ajamuutuja, et määrata power-upi mõju peatumine. Ajamuutuja väärtuseks paneme nulli, liidame sellele muutujale kestvusaja power-upi aktiviseerudes ning vähendame muutuja väärtust
update
meetodis.
private float jumpPowerUpTimeLeft = 0;
private float runPowerUpTimeLeft = 0;
public void activateJumpPowerUp() {
jumpPowerUpTimeLeft = 10;
}
public void activateRunPowerUp() {
runPowerUpTimeLeft = 10;
}
public void update(float deltaTime) {
if (jumpPowerUpTimeLeft > 0) {
jumpPowerUpTimeLeft -= deltaTime;
}
if (runPowerUpTimeLeft > 0) {
runPowerUpTimeLeft -= deltaTime;
}
}
Kasutame
applyLinearImpulse
meetodit, kusVector2
esimene väärtus tähistab horisontaalset ja teine vertikaalset jõudu (impulssi). Power-upi aktiviseerudes muudame seda.
private void setCorrectJumpingHeight() {
if (jumpPowerUpTimeLeft > 0) {
player.getB2body().applyLinearImpulse(new Vector2(0, 7f), player.getB2body().getWorldCenter(), true);
} else {
player.getB2body().applyLinearImpulse(new Vector2(0, 4.5f), player.getB2body().getWorldCenter(), true);
}
}
private void setCorrectSpeedRight() {
if (rumpPowerUpTimeLeft > 0) {
player.getB2body().applyLinearImpulse(new Vector2(1f, 0), player.getB2body().getWorldCenter(), true);
} else {
player.getB2body().applyLinearImpulse(new Vector2(0.1f, 0), player.getB2body().getWorldCenter(), true);
}
}
private void setCorrectSpeedLeft() {
if (rumpPowerUpTimeLeft > 0) {
player.getB2body().applyLinearImpulse(new Vector2(-1f, 0), player.getB2body().getWorldCenter(), true);
} else {
player.getB2body().applyLinearImpulse(new Vector2(-0.1f, 0), player.getB2body().getWorldCenter(), true);
}
}
Eelnevalt looduid vertikaalset ja horisontaalset liikumist saame välja kutsuda meetodis, mis tegeleb klahvivajutuste jälgimisega.
public void handleInput() {
float xVelocity = player.getB2body().getLinearVelocity().x;
if (Gdx.input.isKeyJustPressed(Input.Keys.UP) && (player.getCurrentState().equals("run")
|| player.getCurrentState().equals("standing"))) {
setCorrectJumpingHeight();
}
if (Gdx.input.isKeyPressed(Input.Keys.RIGHT) && xVelocity <= 2) {
setCorrectSpeedRight();
}
if (Gdx.input.isKeyPressed(Input.Keys.LEFT) && xVelocity >= -2) {
setCorrectSpeedLeft();
}
// Stop moving
if (!Gdx.input.isKeyPressed(Input.Keys.RIGHT) && !Gdx.input.isKeyPressed(Input.Keys.LEFT)) {
player.getB2body().setLinearVelocity(0, player.getB2body().getLinearVelocity().y);
}
}
Klahvivajutuste käsitlemise loogika peame ka lisama update() meetodisse.
public void update(float deltaTime) {
if (jumpPowerUpTimeLeft > 0) {
jumpPowerUpTimeLeft -= deltaTime;
}
if (rumpPowerUpTimeLeft > 0) {
rumpPowerUpTimeLeft -= deltaTime;
}
handleInput();
}
Kahekordne kiiruse jaoks on Sound liideses meetod setPitch()
, mis tahab kahte muutujat, esimene on siiani olnud muusika kiirus (float) ja teine on, mis kiiruseks on nüüd soov muusikat muuta (float).