Ricerca…


Semplice movimento tra due posizioni

Per questo la soluzione migliore è usare le actions . Per aggiungere una nuova azione a un attore in Scene2D basta chiamare:

Action action = Actions.moveTo(x,y,duration);
actorObject.addAction(action);

Dove xey è la posizione target e la durata è la velocità di questo movimento in secondi ( float ).

Se vuoi interrompere questa azione (e l'attore), puoi farlo chiamando:

actorObject.removeAction(action);

oppure puoi rimuovere tutte le azioni chiamando:

actorObject.clearActions();

Ciò interromperà immediatamente l'esecuzione delle azioni.

L'azione moveTo manipola la proprietà x e y dell'attore, quindi quando si disegna l'attore sullo schermo usa sempre getX () e getY () per disegnare le trame. Proprio come nell'esempio seguente:

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow