It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened,
visit the help center。
7年前关闭。
因此,我正在使用slick2d和MarteEngine库制作2D Java游戏。自从我为Java类做检查程序以来,这是最大的项目。对于编程概念和使用最佳方式完成工作,我还是一个新手。
我的游戏的基本结构是您是僵尸启示录中的玩家/英雄,并且您可以聚集幸存者来帮助您。我在编程中涉及很多方面。我不确定我的方法是否适合我想要的方法。该游戏目前还没有网格/方块系统。
我看过一些开源Java游戏,但它们并没有真正回答我对方法的疑问。因此,我将在此处列出我不确定的内容,希望大家可以确认/否认我的方法是否合适。抱歉,如果此列表过长,我在输入时会想到这些问题。
瞄准/攻击-幸存者一旦进入枪支的目标范围,就会自动攻击僵尸。为此,我让每个幸存者获得到每个僵尸的距离(使用距离公式),并找到最接近的僵尸进行攻击。我会不断检查这一点,因此,如果更快的僵尸靠近,幸存者将改变目标。对于僵尸,他们会获得目标并坚持下去(目前)。僵尸会使用距离公式不断检查它们是否在攻击范围内(约50个像素)。如果它们在范围内,则停止并发动攻击,否则,朝目标移动。
2D摄像头-因此,在2D环境中的摄像头可以代替您移动整个世界。我当前的方法是将僵尸/幸存者/地图上的任何实体存储在数组列表中。首先调整背景,然后循环浏览所有列表,并修改每个实体的x和y值。这似乎可以正常工作,但是您确实可以注意到某些东西在后台滑动。不太确定如何避免这种情况。
用户界面-我真的不知道如何使用UI。到目前为止,我一直在简单地使用背景,然后生成按钮对象并手动将它们对齐。然后,我检查鼠标是否在按钮的任何区域上,以及当鼠标悬停在按钮上时是否单击。我有三种不同的背景和按钮,它们是用布尔值切换出来的。我将使用带有背景和按钮的对象重新编码该区域。这是做UI的正确方法吗?
寻路-我还没有寻路系统。我必须坚持使用网格系统吗?我真的希望我的实体沿着地形自由移动,而不是在怪异的正方形到正方形的运动中移动。
选择-我拥有它,因此您可以选择幸存者,升级他们以及其他随机物品。我当前的选择方法是不断检查鼠标X和Y在哪里。我得到了鼠标到每个幸存者的距离,并检查它是否在30像素以内。然后,我检查是否有单击,如果有单击,请选择幸存者,然后取消选择所有其他幸存者。如果我单击开放空间,我仍在尝试找出如何取消选择所有幸存者的方法。有没有更好的方法可以做到这一点?
捡东西-和前面说的一样。我检查从播放器到可以拿起的每个物品的距离。如果该项目在播放器的30像素之内,它将拾取它。我认为目前看来,它工作正常。也许确实没有其他方法可以做到这一点。
动画-我了解如何使用精灵制作动画,但我只是想确定一下。因此,如果我有7种不同的枪支需要射击,我是否需要手动进行在每个子画面上具有精确定时的功能。假设我有a弹枪,它需要后坐力,向前抽水,短暂停顿,向后抽水,然后再次准备。对于手枪,我真的只需要后坐力即可。因此,我必须为每个动画制作独特的功能吗?
很抱歉键入这个长长的问题清单。我试图尽可能多地收集有关该资料的信息,但我找不到很多有关该资料的示例。我非常感谢任何答案,甚至只是是或否的答案。提前致谢!
2D相机:
当您说要修改每个实体的位置时,并不确定要做什么,但是我要做的方式是有一个Camera对象,该对象具有自己的x,y,宽度,高度以及用于移动相机的方法,并且然后在绘制周期中:
for (every Object on the map)
{
if (Object is within Camera bounds)
{
// Draw the Object at the Object-xy minus the Camera-xy
// This will draw the Object at its position relative to the camera
// and won't waste time drawing things that are not within camera bounds
}
}
定位/攻击
您有正确的主意,但是针对每个幸存者检查每个僵尸将需要大量计算,并且(取决于僵尸和幸存者的数量)会导致游戏速度大大降低。碰撞检测的处理方法相同,将每个对象与其他每个对象进行检查以查看它们是否发生碰撞需要很多时间。有一些方法不必对所有内容进行检查,我建议您阅读“空间分区”。我没有使用slick2d,但也许它已经为您实现了。
捡东西
与定位/攻击相同,如果有太多物品或可以拾取物品的物品,则最终会大大降低帧速率。
选择中
这不是您应该进行选择的方法,但是我自己根本不必使用选择,因此我不确定最好的方法,您应该尝试寻找方法来进行选择。无论哪种方式,您都可以通过仅单击一次检查来改进当前方法,您无需检查每个帧,而只需检查是否有单击即可。
目前,这是我能提供的所有帮助,希望至少对您有所帮助。
我是一名优秀的程序员,十分优秀!