什么碰撞检测方法与手绘表面一起使用?

时间:2012-08-02 16:53:14

标签: cocos2d-iphone game-physics

我有一个月球登陆型游戏。我不使用任何物理引擎。 如果你不使用推进器并最终降落在地面上,我的着陆器会不断下降。地面是手绘的,它不是一条线,更像是曲线,并且土地可以是任何配置或颜色。 如何正确使用碰撞检测及其结果?

1 个答案:

答案 0 :(得分:3)

这取决于你想做什么。我会推荐以下其中一项:

  1. 使用物理引擎。他们有一些东西。您可以创建绘制的不同形状。你可以混合一个矩形,如果是一条直线,或者曲线的很多圆圈等等。

  2. 使用您自己的自定义圆形碰撞检测器。您使用边界框大小的圆圈表示着陆器。然后,对于每个手绘线,创建一组代表该线的相邻圆。当您检查着陆器位置时,您基本上循环遍历表示线条的圆圈并检查碰撞。传入的伪代码

    for (CollisionCircle* circle in collisions)
    {
        if (circle.collidesWith(lander.collisionCircle))
        {
            // 1. Calculate edge distance from lander to circle (position + radius distance)
            // 2. Remove distance from lander position to fix position.
        }
    }