不确定如何在Java Slick游戏中实现子弹系统?

时间:2013-01-14 02:01:08

标签: java slick2d bullet

所以,我一直在关注Slick API 2D Game Java教程的教程,并且我已经掌握了如何使用API​​的基础知识。但是,当我在玩游戏并尝试制作游戏时。我试图在我的2D太空射击游戏中实现子弹/射击系统。我似乎找不到办法做到这一点!

我试过在谷歌和YouTube上四处寻找,但它根本没有帮助......!我现在所有的游戏都是从右到左移动一艘船。我希望能够做到这一点,以便每次按下空格键时都会触发类似子弹的对象。我只是不确定如何去做...我希望有人可以简单地向新程序员解释它!

2 个答案:

答案 0 :(得分:5)

我对Slick知之甚少,但“子弹系统”背后的想法并不是那么糟糕。

除非你想要在他们开火时立即点击,这似乎不是你所做的,你需要做的背后的一般想法是这样的。

首先,听一下空格键。发生这种情况时,请创建一个新的“子弹”对象。

为此物体指定移动方向和速度,然后逐渐向该方向移动。

移动它时,还会检测它是否与敌人交叉。如果确实如此,则移除子弹并杀死敌人。

这是你应该做什么的一个非常基本的想法。

答案 1 :(得分:1)

假设您正在使用轮询进行输入,则需要在空格键的update方法中添加一项检查。如果按下空格键,则将Bullet的新实例添加到项目符号数组中,并在构造函数中传递初始xyvelocity

您的Bullet课程可能类似于:

public class Bullet
{
    public static float VELOCITY;
    private Vector2f position;

    public Bullet(float x, float y, float velocity)
    {
        position = new Vector2f(x, y);

        VELOCITY = velocity;
    }

    public void update(float delta, boolean vertical)
    {
        if(vertical)
        {
            y += VELOCITY * delta;
        }
        else
        {
            x += VELOCITY * delta;
        }
    }
}

您还需要在update方法中调用bulelts的更新方法。通过以下方式执行此操作:

for(Bullet bullet : bullets)
{
    bullet.update(delta, true);
}