【发布时间】:2016-01-12 11:05:20
【问题描述】:
你看,我没有发布代码,因为我需要逻辑、数学和算法。嗯:
我正在尝试使用图层和视差滚动为自上而下的平铺地图实现 3D 视觉效果。问题是:目前我只是为每一层设置不同的“速度”。但这仅适用于一些非常特定的摄像机位置,而且,它使得块实际上具有无限的高度(因为它们将“增加高度”直到它们超出摄像机的 FOV)。
有没有更好(应该)达到的效果?哦,我正在使用 C 和 Allegro 5。
我想过限制每一层的偏移量,但我不知道怎么做。
我目前的方法:
这是我当前的“速度”层代码(它重复向上、向下、向左和向右,改变坐标):
if (key[ALLEGRO_KEY_UP])
camera_y[0] -= 1;
camera_y[1] -= 2;
camera_y[2] -= 3;
然后我运行一个循环来绘制带有相对于当前图层偏移量的图块的地图。
顺便说一下,这就是想要的效果(例如 3 层):
【问题讨论】:
-
每一层都应按相对滚动速度进行缩放。或者,您可以在相对于视口原点的背景图块顶部绘制 1:1 大小的叠加图块。为获得最佳效果,请使用立方体“盒子”构建墙壁,其中一个平顶和四个侧面瓷砖,其中两个将根据墙壁“盒子”相对于视口中心的位置倾斜绘制。
-
我在任何地方都找不到与此技术相关的任何内容。我知道我可以让它更顺畅,工作正常,我只是不知道从哪里开始。