如何使角色腿在Java中移动

时间:2014-02-12 08:45:32

标签: java android game-engine game-physics

现在我有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方法画画。 所以我可以帮助解决这个问题吗?

1 个答案:

答案 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。)