半3d墙壁,我应该使用精灵表还是渲染他们的3d?

我要开发一个游戏,这只是它的graphics原型。 在这里输入图像描述

知道我的主要目标平台是iPhone,我想知道是不是最好创建一个包含所有可能角度的spritesheet,或者最好用3d盒子渲染它们?

这里是我将要使用的示例spritesheet: 在这里输入图像描述

如果你打算使用这样的透视摄像机,那么你实际上并没有使用精灵表来保存任何东西。 我的意思是我想你可以在屏幕四分之一的位置渲染所有潜在的墙壁,然后为其他三个象限做镜像,但是假设一个固定的摄像机。

为什么你要使用精灵表呢? 因为精灵本身必须是透明的,所以你不会真的在透明绘图上保存。

另外作为一个精灵表,如果你想做任何有趣的相机效果,如缩放,倾斜,平移等,你就会限制自己。

你可能会发现,完整的3D将比你提出的精灵表方法简单得多。 例如,您可以免费获得透视图,而不必为每面墙做很多繁琐而复杂的计算。 在纹理内存使用上它也会更轻量级。

你有看看cocos3d吗? 它允许您将3D内容与常规的cocos2d图层/节点混合。

既然你已经使用了cocos2d,这可能是你的任务的理想select。 AFAIK目前cocos3d的三维模型导入有限,从搅拌机导出animation资产时出现问题。 但对于简单的立方体像你的墙壁的对象,这似乎是一个完美的契合。

如果去完整的三维只是为了墙壁太多,我建议'硬编码'的3D只是为了墙壁。

这样做的一种方法是,如果您可以在运行时创建和更改形状:每个墙都是二维正方形。 4个顶点,vertex1_bottom,vertex2_bottom,vertex1_top和vertex2_top。 使底部顶点与前景一起移动,另外两个顶点稍微移位并以稍大的速度移动。 这是在较老游戏(例如8/16位)中用于背景的视差效果的常用技术,只有在这里您将以不同的方式使用它。

位移和速度方程实际上非常简单。 如果我们把坐标系置于屏幕中心 (这非常重要),你所要做的就是根据底部的顶点对顶点进行缩放:

v1_top = factor * v1_bottom;

v2_top = factor * v2_bottom;

您可能需要尝试一下这个因素。 基本上,这个系数越高,靠近摄像机的墙壁就会出现(低值可能最好)。

我正在写这些东西,所以可能会有一些概念上的问题。 让我知道,如果你find任何。 希望这可以帮助 :)