我有一个问题,动画我的角色的运动在我的游戏。我用的是一个由16个元素组成的图像数组。
第一个周期进行得很好,但在那之后,角色就没有动画了。它会移动,但不会改变图像,只显示该周期的第一个元素。如果我改变方向,一个周期再次下降,并以同样的方式停止。
有什么想法吗?
这是我的代码:
public void paintHero(Graphics g) {
// paint character
offG.drawImage(heroCurrent, hero.getHeroX(), hero.getHeroY(), this);
// show first image of the cycle where the character stands
if (hero.getMoveX() == 0 && hero.getMoveY() == 0)
heroFrame = 0;
else {
heroFrame++;
if (heroFrame == 16)
heroFrame = 0;
// I'm dividing heroFrame by 4 to slow down the animation
if (hero.isMovingUp() == true)
heroCurrent = heroSprites[4 + heroFrame / 4];
if (hero.isMovingDown() == true)
heroCurrent = heroSprites[0 + heroFrame / 4];
if (hero.isMovingLeft() == true)
heroCurrent = heroSprites[8 + heroFrame / 4];
if (hero.isMovingRight() == true)
heroCurrent = heroSprites[12 + heroFrame / 4];
}
}发布于 2014-11-05 11:04:19
我成功了,但我不知道为什么它现在起作用了。我在每个if语句之后添加了抽签,并保留了第一个语句。如果有人能解释的话,我们会非常感激的。
public void paintHero(Graphics g) {
offG.drawImage(heroCurrent, hero.getHeroX(), hero.getHeroY(), this);
if (hero.getMoveX() == 0 && hero.getMoveY() == 0)
heroFrame = 0;
else {
heroFrame++;
if (heroFrame == 16)
heroFrame = 0;
}
if (hero.isMovingUp()) {
heroCurrent = heroSprites[4 + heroFrame / 4];
offG.drawImage(heroCurrent, hero.getHeroX(), hero.getHeroY(), this);
}
if (hero.isMovingDown()) {
heroCurrent = heroSprites[0 + heroFrame / 4];
offG.drawImage(heroCurrent, hero.getHeroX(), hero.getHeroY(), this);
}
if (hero.isMovingLeft()) {
heroCurrent = heroSprites[8 + heroFrame / 4];
offG.drawImage(heroCurrent, hero.getHeroX(), hero.getHeroY(), this);
}
if (hero.isMovingRight()) {
heroCurrent = heroSprites[12 + heroFrame / 4];
offG.drawImage(heroCurrent, hero.getHeroX(), hero.getHeroY(), this);
}
}发布于 2014-11-04 18:53:03
在没有改变方向的情况下,您不会更新精灵。它应该是:
public void paintHero(Graphics g) {
// paint character
offG.drawImage(heroCurrent, hero.getHeroX(), hero.getHeroY(), this);
//always update frame
heroFrame++;
if (heroFrame == 16)
heroFrame = 0;
// show first image of the cycle where the character stands
if (hero.getMoveX() == 0 && hero.getMoveY() == 0)
heroCurrent = heroSprites[heroFrame];//update even if character isnt moving
else {
// I'm dividing heroFrame by 4 to slow down the animation
if (hero.isMovingUp())
heroCurrent = heroSprites[4 + heroFrame / 4];
else if (hero.isMovingDown())
heroCurrent = heroSprites[0 + heroFrame / 4];
else if (hero.isMovingLeft())
heroCurrent = heroSprites[8 + heroFrame / 4];
else if (hero.isMovingRight())
heroCurrent = heroSprites[12 + heroFrame / 4];
else//stand still
heroCurrent = heroSprites[heroFrame];
}
}https://stackoverflow.com/questions/26742647
复制相似问题