2

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

4

1 回答 1

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.
        }
    }
    
于 2012-08-05T16:56:17.800 回答