数学雷达/战区类型的游戏

时间:2013-06-08 18:30:11

标签: math geometry

我很痛苦地说,当我年轻的时候,我从来没有像我应该在数学课上那样注意......所以,我正在向社区询问有关从哪里开始寻找的一些想法。

我最近一直在想,像Battlezone,Robot Tank等游戏是如何在80年代制作的。如果我想制作这样的游戏,我需要什么数学来实现这些游戏中使用的雷达?我将如何将其转化为第一人称视角?我可以解析哪些例子?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

在这类游戏中,可以采用一些通用方法来计算数学。

  • 一种方法是在直角坐标系中跟踪所有对象(包括玩家)的位置,其中增加的Y总是表示相同的方向(例如“北”)。为了使这种方法运作良好,对象可以移动的空间应该有限制。

  • 另一种方法是跟踪玩家在固定方向坐标系中的位置,但是假设玩家总是在0,0;将玩家移动一定距离,将所有其他物体的位置移动该距离。与玩家距离过大的物体通常应该不再存在,但在某些情况下,坐标“换行”也是可以接受的(因此如果玩家在主要指南针方向上徘徊足够远,物体将重新出现)。 p>

  • 另一种方法是使用以玩家为中心的坐标系,但不断旋转东西,使Y方向增加始终直接在玩家前方。这种方法简化了绘图,但是使旋转播放器的成本更高,特别是如果想要避免让其他物体稍微移动一下。另一方面,这种方法对于某些游戏来说是可以接受的,在这些游戏中,所有非玩家对象都在移动,以至于由数字快捷方式引起的一些杂散运动不会太明显。

  • 最后,人们可以努力将玩家的位置存储在极坐标中。如果一个人试图准确地描绘事物,这种方法就不会有太多推荐,但有些游戏使用了非常粗略的近似值并取得了合理的成功。

在现代硬件上,我建议使用前两种方法之一。后两者在为1980年代的游戏机或计算机编写游戏时有时很有用,这些游戏机或计算机的RAM不到1%(有时不到内存的1 / 1,000,000 - 实际上!)并且运行速度不到1/1000今天的机器的速度,但主要是为了历史兴趣。

如果您的游戏将对象位置保持在正Y是北坐标系,那么可以通过首先计算相对于玩家位置的X和Y来确定它们应该在屏幕上出现的位置(如果坐标不保留在该位置)格式,从实际位置减去玩家X和Y)。然后通过计算MX = X * sin(航向)+ Y * cos(航向)和MY = Y * sin(航向)-X * cos(航向)将这些坐标转换为正-Y-is-ahead坐标。 MX,MY,Z处的点的屏幕坐标(Z坐标0和地平线处的屏幕坐标0)将是SX = MX / MY和SY = Z / MY。

您可能需要使用缩放和单位来使对象显示正确的大小和比例,并避免绘制太靠近播放器的对象(或者更糟糕的是,落后),但上述公式应该让您开始

答案 1 :(得分:1)

您很可能会尝试从cartesian coordinate system(即x,y坐标)转换为polar coordinates(即,距离“雷达”中心的角度和距离)。这是一个相对简单的三角转换。