Ммм, это сложно объяснить, поэтому я сделаю все возможное ...
У меня есть этот метод:
private void manageActions(long delta) {
lastFrameChange += delta;
if(currentAction == States.Action.STANDING) {
lastFrameChange = 0;
resetDirections();
}
if(currentAction == States.Action.WALKING) {
switch(currentDirection) {
case UP:
if(lastFrameChange > 75.0f) {
lastFrameChange = 0;
if(++currentFrame > 2)
currentFrame = 1;
}
break;
case DOWN:
if(lastFrameChange > 75.0f) {
lastFrameChange = 0;
if(++currentFrame > 5)
currentFrame = 4;
}
break;
case LEFT:
if(lastFrameChange > 75.0f) {
lastFrameChange = 0;
if(++currentFrame > 7)
currentFrame = 6;
}
break;
case RIGHT:
if(lastFrameChange > 75.0f) {
lastFrameChange = 0;
if(++currentFrame > 9)
currentFrame = 8;
}
break;
}
}
}
Это метод для изменения фреймов персонажа на основена его ориентацию и статус (стоять, ходить ...) Проблема в том, что когда мой персонаж движется вверх, а затем вправо, он проходит через все кадры между ними.Это связано с тем, что переменная currentFrame не сбрасывается каждый раз, когда вы изменяете ориентацию в правильном направлении, и последний кадр сохраняется.
Еще одна вещь, resetDirections () устанавливает переменную currentFrame для постоянных кадров символа.
Я думал, когда нужно сбросить эту переменную, но понятия не имею: /