Я пытаюсь добавить следы в свою игру, поэтому, когда игрок идет по снегу или песку и т. д., он оставляет маленькие следы, которые исчезают. Этот код ниже почти работает. Что происходит, так это то, что он постоянно оставляет новые следы, когда игрок ходьбы, так что я получаю длинный ряд неразличимой сетки следов, которые обновляются с каждым игровым циклом.
Я считаю, что мне нужна задержка между новыми следами, но я не уверен, как это правильно сделать. У кого-нибудь есть предложения?
if (player.overlaps(snow))
{
if (player.getSpeed() != 0)
{
FootPrint footPrint = new FootPrint(0,0, mainStage);
hero.toFront();
footPrint.setPosition(player.getX(), player.getY());
footPrint.addAction(Actions.fadeOut(5.0f));
footPrint.addAction(Actions.after(Actions.removeActor()));
}
}
Вы можете добавить экземпляр FootprintIntervalCounter
и вызвать его в своем алгоритме. Наивная реализация:
public class FootprintIntervalCounter {
private long lastRenderTimeMillis;
private long interval;
private boolean renderingCompletionFlag;
public boolean isFootprintNeeded() {
if (!renderingCompletionFlag) {
return false;
}
long currentTime = System.currentTimeMillis();
boolean isNeeded = (currentTime - lastRenderTimeMillis) > interval;
if (isNeeded) {
renderingCompletionFlag = false;
}
return renderingCompletionFlag;
}
public void afterFootprintIsRendered(long renderTimeMillis) {
renderingCompletionFlag = true;
lastRenderTimeMillis = renderTimeMillis;
}
}
Спасибо :) В итоге я реализовал версию вашего ответа, и она не работает нормально :)