0
嗯这是很难解释它,所以我会尽我所能...设置一个变量一旦
我有这样的方法:
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变量设置为字符的常规框架。
我一直在想,如果重置此变量,但我没有任何想法:/
我想这样做没有更多的变量,保持简单,但我会尝试你的解决方案。谢谢! – Puyover
我想没有其他变量就无法做到这一点。要检测变化,你需要知道以前的状态。 –