【问题标题】:Not sure how to implement a bullet system in Java Slick game? [closed]不确定如何在 Java Slick 游戏中实现子弹系统? [关闭]
【发布时间】:2013-01-14 02:01:07
【问题描述】:

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

我尝试在 Google 和 YouTube 上四处查看,但根本没有帮助...!我现在所做的所有游戏就是从右到左移动一艘船。我希望能够做到每次按下空格键时都会发射子弹状物体。我只是不知道该怎么做...我希望有人可以简单地向新程序员解释一下!

【问题讨论】:

  • 虽然可能会有人回答你的问题(我没有使用过引擎),但我建议先掌握 Java - 通过一些 tutorials
  • 虽然寻求他人的帮助可能对您有用,但最好自己学习如何去做,这样您才能完全理解这些概念。

标签: java slick2d bullet


【解决方案1】:

我对 Slick 了解不多,但“子弹系统”背后的想法还不错。

除非你想在他们开火时立即命中,而你似乎没有这样做,否则你需要做的事情的总体思路是这样的。

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

给这个物体一个运动方向和速度,然后逐渐向那个方向移动。

在移动它的同时,还要检测它是否与敌人交叉。如果是,则移除子弹并杀死敌人。

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

【讨论】:

  • 这不是一次只能发射一颗子弹吗?还是我错了?正如我所看到的,我不太确定,之前在其他“发射系统”中使用的 ArrayList ......所以,我想我要问的是创建一个新的 Bullet 对象,允许向一个发射几个子弹时间?
  • 嗯,'只要按下空格键,就可以创建子弹'然后你可以控制每个子弹的间隔,并限制它们(弹药)
  • 就像 Jeremy 说的,你可以检测空格键是否被持续按住并保持原样生成子弹。此外,每次按下空格键时,都会生成一个新的子弹。您可以使用 arraylist 或任何其他容器来组织它们,以便您可以对它们进行整体移动和命中检测等操作。
【解决方案2】:

假设您使用轮询输入,您需要为空格键的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 方法中为项目符号调用更新方法。使用以下方法执行此操作:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多