-
Notifications
You must be signed in to change notification settings - Fork 8
02a Sprites bewegen
In deze korte tutorial gaan we op basis van de vorige tutorial (deze tutorial is lastig te volgen zonder de vorige tutorial gevolgd te hebben):
- kijken naar hoe de engine omgaat met het ontvangen van invoer of input (toetsenbord)
- aan de slag met het voortbewegen van GameObjects
Elke klasse die overerft van het type GameObject kan de member method keyPressed
overriden. Dat betekent dus dat voor onze Player
klasse die weg hebben gemaakt in de voorgaande tutorial we een methode toe kunnen voegen met de @Override
annotatie.
@Override
public void keyPressed(int keyCode, char key) {
}
Deze methode is nu nog leeg, oftewel een stub. Maar daar gaan we snel verandering in brengen. Op computers hebben alle toetsen een speciaal nummer om de goede toetsen te herkennen. Mocht je die graag uit je hoofd leren kijk dan vooral op de Wikipedia-pagina daarover. Gelukkig zitten er in de GameEngine
een aantal dingen voor het gemak ingebouwd.
Omdat we de TutorialWorld
beschikbaar hebben binnen de Player
kunnen we ook de static members opvragen die vooral de moeilijkere (zoals de pijltjes, spatie, etc) toetsen makkelijk maken:
@Override
public void keyPressed(int keyCode, char key) {
if (keyCode == world.LEFT) {
System.out.println("Ik druk op de links knop");
}
}
Als je nu de game draait en op het pijltje links drukt, zie je als het goed de tekst afgedrukt worden in de console van Eclipse.
Het bewegen van SpriteObjects (die overerven van GameObject
) gaat iets anders dan je misschien gewend bent van Processing. Je verandert namelijk niet direct de x-positie van een plaatje (behalve als je dat echt zou willen). Maar je verandert de snelheid en mogelijk ook de richting waarmee het mee beweegt. De richting worden gemeten in graden zoals op een kompas.
- Noord/Boven is 0 (of 360) graden
- West/Links is 270
- etc.
@Override
public void keyPressed(int keyCode, char key) {
final int speed = 5;
if (keyCode == world.LEFT) {
setDirectionSpeed(270, speed)
}
}
Voor een overzicht van alle methoden die een SpriteObject heeft overgeërfd wat betreft beweging zie de API documentatie van GameObject.
Hint: kijk naar de setter methoden (bijv. setxSpeed, setFriction etc.)
Zoek je code? Die staat in de OOPG engine op GitHub.