处理敌人精灵的创造

我正在试图建立一个基于RPG瓷砖地图的游戏。 目前我要设定敌人的精灵将以固定的path重复他们的动作。 假设我有一个级别图,它的宽度比用户可见的实际小程序大3倍。

现在我的问题是,我应该如何处理敌方精灵的创造? 我有两个select:

1)在水平加载的时候创建所有的敌人(我不想按照这个方法,因为它会占用额外的内存)。

2)创建敌人,直到水平地图对用户可见。 随着用户进一步加载新的敌人。 我想跟随这个,但是我没有任何想法。

有人可以提示我遵循这个步骤,并告诉我通常由游戏开发者跟踪的方法吗?

通常你会定义一个围绕用户当前视图的区域,并且比较大(比如2或3倍)。 在启动时你加载了该区域的所有敌人。 随着用户的移动,你可以预先加载敌人,进入这个区域,并卸载离开它的敌人。 这样你就有一个需要加载的敌人的上限,可以创建任意的大世界。

这里的关键是find该区域的确切大小,以便用户永远不会看到敌人在当前视图中popup(这就是为什么简单地使用视口是不够的)。 如果敌人移动得很慢,那么面积可能会更小。 另一方面,如果敌人能够高速移动,则该区域需要更大。

视口。

视口本质上是虚拟相机,可以看你的场景(2D或3D)。 视口总是由一个视图matrix来指定,这个视图matrix是相机定位和旋转的一组坐标(2D为3×3,4D为4×4)。 视口允许您只查看场景的一部分。 通常情况下,绘图API剔除(不渲染)视口外的任何东西(不绘制它看不到的东西)。 对于你的应用程序,你可以让API处理这个。 更高级的应用程序使用了一种叫做Frustum Culling的方法,它可以更好地控制未渲染的东西。

视口是openGL和DirectX不可分割的一部分。 你没有提到你是直接使用这些还是像LWJGL这样的API。 无论哪种方式,他们都可以访问视口。

此外,由于您正在查看2D飞机,因此您需要一个正字法演示文稿。 在3D世界中,2D平面和相机之间的距离在视图边缘处比在中心处更大。 (如果摄像机是金字塔,则顶部与底边之间的距离大于顶部与底部中心之间的距离。)在正交表示中,2D平面上的所有点与摄像机等距。