libgdx
Движение актеров на пути с постоянной скоростью
Поиск…
Простое перемещение между двумя местоположениями
Для этого лучшим решением является использование actions
. Чтобы добавить новое действие актерам в Scene2D
просто вызовите:
Action action = Actions.moveTo(x,y,duration);
actorObject.addAction(action);
Где x и y - целевое местоположение, а длительность - это скорость этого движения в секундах ( float
).
Если вы хотите остановить это действие (и его актером), вы можете сделать это, позвонив:
actorObject.removeAction(action);
или вы можете удалить все действия, позвонив:
actorObject.clearActions();
Это немедленно остановит выполнение действий.
Действие moveTo управляет свойствами x и y актера, поэтому, когда вы рисуете актера на экране, всегда используйте getX () и getY () для рисования текстур. Как и в следующем примере:
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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow