Java游戏开发:奇怪的运动错误

时间:2014-06-27 21:03:00

标签: java eclipse youtube

我一直在关注如何使用youtube上的Foreign Guy Mike在eclipse中制作一个自上而下的射击游戏。

但我遇到了一个奇怪的错误,玩家可以在没有射击的情况下进行诊断,但是当玩家射击时,他们无法移动到北方和西方同时,我看起来更深一点,但我找不到任何东西。

以下是玩家移动代码:

if(left) {
    dx = (0 - speed);
}

if(right) {
    dx = speed;
}

if(down) {
    dy = speed;
}

if(up) {
    dy = (0 - speed);
}

x += dx;
y += dy;

if(x < r) x = r;
if(y < r) y = r;
if(x > GamePanel.WIDTH - r) x = GamePanel.WIDTH - r;
if(y > GamePanel.WIDTH - r) y = GamePanel.WIDTH - r;

dx = 0;
dy = 0;

if(firing) {
    long elapsed = (System.nanoTime() - firingTimer) / 1000000;
    if(elapsed > firingDelay) {
        GamePanel.bullets.add(new Bullet(270, x, y));
        firingTimer = System.nanoTime();
    }
}

这是整个子弹课程:

package games.duphus.wave;

import java.awt.*;

public class Bullet {
private double x;
private double y;
private int r;

private double dx;
private double dy;
private double rad;
private int speed= 10;

private Color color1;
public Bullet(double angle, int x, int y) {
    this.x = x;
    this.y = y;
    r = 2;

    rad = Math.toRadians(angle);
    dx = Math.cos(rad) * speed;
    dy = Math.sin(rad) * speed;

    color1 = Color.YELLOW;
}

public boolean update() {
    x += dx;
    y += dy;

    if(x < -r || x > GamePanel.WIDTH + r || y < -r || y > GamePanel.HEIGHT + r) {
        return true;
    }

    return false;
}

public void draw(Graphics2D g) {
    g.setColor(color1);
    g.fillOval((int) (x - r), (int) (y - r), 2 * r, 2 * r);
}
}

感谢任何和所有帮助。

2 个答案:

答案 0 :(得分:0)

我没有非常看代码,但我认为你有一个键盘重影问题。我不能告诉你如何解决这个问题,除了改变你用来射击和移动的键。

答案 1 :(得分:0)

我对此并不完全确定,但我认为它必须与键感相关。当您按第三个键时,它会忘记您按下的第一个键。我做了同样的教程,这就是我的结论。

相关问题