14 我想做一个等距的跳跃风格的平台游戏。玩家应该能够跳到地板上方的平台顶部,撞到物体的侧面等。 我将使用2D游戏引擎,所以我不想为未使用的尺寸模拟完整的3D碰撞。 我认为游戏中的对象应使用:X,Y,宽度,高度和Z表示深度。 使用这些值,我应该如何检测冲突? collision-detection isometric — 杰德塞诺 source 我知道这是一个一般性的问题,但是,我想获得更详细的答案或指向良好学习资源的链接。 — jdeseno
19 2种选择: 您可以将其视为具有固定正交摄影机的3D游戏。然后,您可以使用任何标准的3D游戏资源/书籍/教程/库。即使使用Sprite以2D进行渲染,运动等数学运算仍将在场景后方进行3D渲染。这将为您提供最准确的结果。 您可以将其视为自上而下的2D游戏,具有增加的height属性。例如,假设一个2D网格,其中每个图块都有一个高度值。当从一个图块移动到另一个图块时,仅当角色的脚在其上方或等于该图块的高度时,才让角色传递到特定的图块,但是如果角色在跳跃并且重力将其放下到图块的顶部,则您让他们留在那里。如果再做一些工作,您就可以做到,这样您就可以在桥梁下行走。 — 伊恩 source
4 有很多方法可以简化此过程。例如,如果您不允许图层(例如,您可以上下走过的桥梁),则可以在X / Y维度上进行所有碰撞检测,在其中您可以将碰撞集过滤为高度+深度的任意值或更高。 — 铁蛙 source
2 如果游戏基于矩形网格,则此网格定义您的X / Y轴。Z可以用作高度。 碰撞与任何基于2D瓷砖的游戏一样容易。 然后,您只需要从网格转换回等轴测屏幕坐标即可进行渲染。这非常简单-但是您可能需要考虑计算“深度”值,以进行排序(从后到前渲染等轴测场景) — bluescrn source 使用Z表示高度是违背本能的,但是在自上而下的2D游戏中这样做是正确的。那么您就可以在侧面游戏和自顶向下游戏之间重用代码。 — 伊恩
2 谷歌搜索我发现这个演示:http : //planetskill.com/iso/ WASD移动。空格键跳 它仅实现与上/下轴的碰撞,但添加其他碰撞应该很容易: 如果下一步的上/下位置高于最大位置,请不要移动。这也应该使您以简单的方式实现跳跃。 此处的示例代码:http : //gist.github.com/478997 — 夜曲龙 source
2 上述所有的。等轴测只是剪切的2d网格,因此将其视为2d tilemap,并考虑一种编码深度的方法。在常规的2D游戏中(如何在“跳跃”时能够在方块后面或方块前面)进行操作,您会如何存储每个图块的深度(深度缓冲区-> z缓冲区)或使用多层,或者,如果需要的话,可以为每个tiletype(或mapposition)实现一个回调,并且可以执行所需的任何操作,检查深度,检查设备,扭曲播放器,让播放器缓慢向上移动,格式化HD。 — j source Kaj的好答案-这是问题的关键,我很惊讶没有其他人提出这个问题。在物理方面,这总是使新手对等距感到困惑。 — 工程师