实际上可以使您的碰撞检测算法在尺寸上不可知。只需要一个沿一个维度工作的碰撞检测器,使用它来检查每个维度,而您对“这些碰撞与否”的回答是沿着每个维度的碰撞检测的逻辑与。
您的游戏应该组织起来,以保持游戏对象的交互性,并将游戏的渲染完全分离到屏幕上。您可以将程序的这两部分看作“模型”和“视图”。在模型中,你有一个完整的三维世界,3轴。没有一定程度的痛苦,你无法在这一点上达到一半。你的模型必须是适当的3D。
该视图将读取所有游戏对象的位置,并使用相机定义将它们投影到屏幕上。对于这部分你不需要一个完整的3D渲染引擎。对于你所说的视角而言,正确的技术术语是“倾斜的”,可以在许多古代中国和日本的卷轴画和版画中看到 - 特别是寻找“源氏物语”的图像。
物体的屏幕位置(包括地面!)是这样的:
DEPTH_RATIO=0.5;
view_x=model_x-model_z*DEPTH_RATIO-camera_x;
view_y=model_y+model_z*DEPTH_RATIO-camera_y;
可以为直正投影正投影修改:
DEPTH_RATIO=0.5;
view_x=model_x-camera_x;
view_y=model_y+model_z*DEPTH_RATIO-camera_y;
当然不要忘了扑杀相机所限定的体积之外的对象。
您也可以使用此机制来为您处理视差图层的位置。当然,这是一个改变你的相机的问题,而不是一个正交投影的1点透视投影。你不必使用它来改变精灵的渲染大小,但它可以帮助你逼真地管理对象的x位置。如果你面临挑战,你甚至可以混合使用投影 - 对于深层背景使用1点透视,对前景使用正字法。
很好的答案布列塔尼。我现在全部解决了。谢谢您的帮助! – 2010-01-15 21:40:19