现在我有MainStarting类,游戏循环和绘画每60 FPS发生一次。
我有3种状态可以进行角色1-闪避,2次跳跃和3次步行,每个州都拥有自己的照片,我会调用这张照片并按键进行绘画。
现在我希望他的腿移动不仅仅是徘徊,我也不明白这样做的逻辑。 我需要多少张图片? 60个图像覆盖整个1个周期的运动[从左腿开始然后右腿然后站立]因为60 FPS?
这就是我调用图片的方法
public void init() {
setSize(800, 480);
setBackground(Color.BLACK);
setFocusable(true);
addKeyListener(this);
Frame frame = (Frame) this.getParent().getParent();
frame.setTitle("Q-Bot Alpha");
try {
base = getDocumentBase();
} catch (Exception e) {
// TODO: handle exception
}
// Here are the images , Only 3 images standing and jumping and ducking
character = getImage(base, "data/character.png");
characterDown = getImage(base, "data/down.png");
characterJumped = getImage(base, "data/jumped.png");
currentSprite = character;
background = getImage(base, "data/background.png");
heliboy = getImage(base, "data/heliboy.png");
}
以下是游戏循环
public void run() {
while (true) {
robot.update();
if (robot.isJumped()) {
currentSprite = characterJumped;
} else if (robot.isJumped() == false && robot.isDucked() == false) {
currentSprite = character; // use switch case in case the character is moving so u can use 10 pictures of the Stick man animation with switch case
}
ArrayList projectiles = robot.getProjectiles();
for (int i = 0; i < projectiles.size(); i++) {
Projectile p = (Projectile) projectiles.get(i);
if (p.isVisible() == true) {
p.update();
} else {
projectiles.remove(i);
}
}
bg1.update();
bg2.update();
hb.update();
hb2.update();
repaint();
try {
Thread.sleep(17); // To get 60 FPS per second
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
然后我用paint方法画画。 所以我可以帮助解决这个问题吗?
答案 0 :(得分:0)
如果你能更清楚地说明一下你的代码会更好,但是现在,根据这个信息,
character = getImage(base, "data/character.png");
characterDown = getImage(base, "data/down.png");
characterJumped = getImage(base, "data/jumped.png");
currentSprite = character;
background = getImage(base, "data/background.png");
heliboy = getImage(base, "data/heliboy.png");
在我看来,你的角色的每个可能状态都有一个单独的精灵。你需要的是“中间”精灵/框架,让你的角色“运动”(右/左腿部分向上,右/左腿伸展,右/左腿向下)。
我没有用Java做过很多游戏编程,更不用说Android了,但我认为你可以从Pyganim提升概念并从那里开始。 (Pyganim在Python中,使用PyGame。)