libgdx
Acteurs op pad bewegen met constante snelheid
Zoeken…
Eenvoudige beweging tussen twee locaties
De beste oplossing hiervoor is het gebruik van actions
. Bel om een nieuwe actie toe te voegen aan een acteur in Scene2D
:
Action action = Actions.moveTo(x,y,duration);
actorObject.addAction(action);
Waar x en y de doellocatie is en duur de snelheid van deze beweging in seconden ( float
).
Als je deze actie (en de acteur erbij) wilt stoppen, kun je dit doen door te bellen naar:
actorObject.removeAction(action);
of u kunt alle acties verwijderen door te bellen naar:
actorObject.clearActions();
Hiermee wordt de uitvoering van de actie (s) onmiddellijk gestopt.
De actie moveTo manipuleert de eigenschap x en y van de actor, dus wanneer u de actor naar het scherm trekt, gebruikt u altijd getX () en getY () om texturen te tekenen. Net als in het volgende voorbeeld:
public class MovingActor extends Actor {
private Action runningAction;
private float speed = 2f;
public void moveTo(Vector2 location) {
runningAction = Actions.moveTo(location.x, location.y, speed);
this.addAction(runningAction);
}
public void stopAction() {
this.removeAction(runningAction);
}
public void stopAllActions() {
this.clearActions();
}
@Override
public void draw(Batch batch, float parentAlpha){
batch.draw(someTexture, getX(), getY());
}
}
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow