所以我正在使用 slick2d 和 MarteEngine 库制作 2d Java 游戏。这是自从我为我的 Java 类制作检查器以来最大的项目。我对编程概念和使用最佳方式完成工作仍然很陌生。
我的游戏的基本结构是你是僵尸启示录中的玩家/英雄,你可以聚集幸存者来帮助你。在我的编程中有很多我关心的领域。我不确定我的方法是否适合我想要的。该游戏目前也没有网格/瓷砖系统。
我看过一些开源 Java 游戏,但它们并没有真正回答我对我的方法提出的问题。因此,我将在这里列出我不确定的内容,希望你们能够确认/否认我的方法是否合适。抱歉,如果此列表太长,我在输入时正在考虑问题。
瞄准/攻击——幸存者一旦进入枪的目标范围内就会自动攻击僵尸。为此,我让每个幸存者获取到每个僵尸的距离(使用距离公式)并找到最近的一个来攻击。我不断检查这一点,所以如果更快的僵尸靠近,幸存者会改变目标。对于僵尸来说,他们会获得一个目标并坚持下去(目前)。僵尸使用距离公式不断检查它们是否在攻击范围内(大约 50 像素)。如果他们在范围内,停止并攻击,否则,向目标移动。
2D 相机- 因此 2D 环境中的相机代替您移动世界。我目前的方法是将地图上的僵尸/幸存者/任何实体存储在数组列表中。首先调整背景,然后循环遍历所有列表并修改每个实体的 x 和 y 值。这似乎工作正常,但有些东西你可以真正注意到在背景上滑动。不太清楚如何避免这种情况。
用户界面- 我真的不知道如何使用 UI。到目前为止,我所做的只是使用背景,然后生成按钮对象并手动排列它们。然后,我检查鼠标是否在按钮的任何区域上,以及鼠标悬停在按钮上时是否有点击。我有三个不同的背景和按钮,我用布尔值切换出来。不过,我将使用带有背景和按钮的对象重新编码该区域。这是做 UI 的正确方法吗?
寻路- 我还没有寻路系统。我必须坚持网格系统吗?我真的更喜欢我的实体沿着地形自由移动,而不是奇怪的方形运动。
选择- 我有它,所以你可以选择幸存者,升级他们,以及其他随机的东西。我目前的选择方法是不断检查鼠标 X 和 Y 的位置。我得到了从鼠标到每个幸存者的距离,并检查它是否在 30 像素以内。然后,我检查是否有点击,如果有,选择幸存者并取消选择所有其他人。如果我单击开放空间,我仍在试图弄清楚如何取消选择所有幸存者。有没有更好的方法来做到这一点?
捡东西- 和之前说的一样。我检查从玩家到每个可以拾取的物品的距离。如果物品在玩家的 30 像素范围内,它会捡起它。我想目前它似乎工作正常。也许真的没有其他方法可以做到这一点。
动画- 我了解如何使用精灵制作动画,但我只是想确定一下。因此,如果我要射击 7 支不同的枪,我是否需要手动制作每个精灵都有精确计时的功能。假设我有一把霰弹枪,它需要后坐力,向前抽气,短暂暂停,向后抽气,然后再次准备好。对于手枪,我真的只需要后坐力。所以我必须为每个动画制作独特的功能?
很抱歉输入这个长长的问题列表。我尝试尽可能多地收集有关这些东西的信息,但我找不到很多关于这些东西的例子。我非常感谢任何答案,即使只是一个是或否的答案。提前致谢!