我一直在关注如何使用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);
}
}
感谢任何和所有帮助。
答案 0 :(得分:0)
我没有非常看代码,但我认为你有一个键盘重影问题。我不能告诉你如何解决这个问题,除了改变你用来射击和移动的键。
答案 1 :(得分:0)
我对此并不完全确定,但我认为它必须与键感相关。当您按第三个键时,它会忘记您按下的第一个键。我做了同样的教程,这就是我的结论。