Java 2D 游戏向不同方向射击

标签 java 2d-games directions

我正在制作一个简单的 2D 游戏,玩家可以向各个方向移动并射击。

到目前为止我设法让它工作,但有一个问题。当我射击时,我希望子弹朝我移动的方向移动。到目前为止我可以射击,但是当我改变玩家的移动方向时,子弹的方向也会改变。

你能帮我让子弹在我四处移动时不改变方向吗?

这是玩家移动的片段:

public static int direction;

public void keyPressed(KeyEvent k) {
    int key = k.getKeyCode();

    if (key == KeyEvent.VK_RIGHT) {
        player.setVelX(5);
        direction = 1;
    } else if (key == KeyEvent.VK_LEFT) {
        player.setVelX(-5);
        direction = 2;
    } else if (key == KeyEvent.VK_DOWN) {
        player.setVelY(5);
        direction = 3;
    } else if (key == KeyEvent.VK_UP) {
        player.setVelY(-5);
        direction = 4;
    } else if (key == KeyEvent.VK_SPACE) {
        controller.addFire(new Fire(player.getX(), player.getY(), this));
    }
}

还有射击类:

public class Fire {

    private double x,y;
    BufferedImage image;

    public Fire(double x, double y, Game game){
        this.x = x;
        this.y = y;
    }
    public void tick(){

        switch (Game.direction){
            case 1:
                x += 10;
                break;
            case 2:
                x -= 10;
                break;
            case 3:
                y += 10;
                break;
            case 4:
                y -= 10;
                break;
        }
    }
    public void render(Graphics graphics){
        graphics.drawImage(image, (int)x, (int)y, null);
    }
}

最佳答案

我认为您需要做的是在您的 Fire 构造函数中检查 Game.direction,然后立即设置子弹速度(为其创建一个私有(private)变量)。这样,如果 Game.direction 稍后发生变化,该变化将不会影响子弹。

关于Java 2D 游戏向不同方向射击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42146336/

相关文章:

iOS MapKit 通过道路连接 map 上的多个点

java - 线程中出现异常 "AWT-EventQueue-0"java.lang.NullPointerException 弹跳球

java - 调用类/枚举与其对象不同 - Java

java - android手机 hibernate 时保持wifi连接

java - 从 GamePanel 调用方法

dictionary - 无法在 MKDirections 中工作以分两点获取 iOS 7 map 方向和路线吗?

java - 在没有许可证提示的情况下在 Linux 上安装 Oracle Sun Java

algorithm - PCG伪迷宫算法?

c++ - 如何绘制具有随机顶点数的多边形并旋转它们?

android - Google Directions API 和安卓