我可以在Godot中进行半圆形碰撞吗?

时间:2019-07-02 16:37:35

标签: 2d collision-detection game-engine game-physics godot

我在Godot中制作了一个半圆形的2D形状。现在,我试图给它适当的碰撞。到目前为止,我还没有办法做到这一点。 CollisionShape2D节点仅允许使用简单的形状,例如圆形和矩形,而CollisionPolygon2D形状则不允许我制作所需的弯曲形状。我有什么办法可以得到正确的碰撞?

1 个答案:

答案 0 :(得分:0)

我对执行此操作的内置函数不熟悉。

但是,您可以做两件事:

  1. 使用CollisionPolygon2D近似圆形。这很简单,可以正常工作。但是,效率可能不是很高。
  2. 您将覆盖对象的碰撞方法。这也很简单:

说这是在head_dir方向上的半圆。简单地:

dir := head_dir
position := this object position
circRadius := semi-circle radius
otherPos := other object position
inside = false
if(dotProduct(dir, otherPos) >= 0):
    inside = true
if(inside):
    if(norm(otherPos - position) > radius)
        inside = false
return inside

第二种方法将为您提供您要查找的确切碰撞。您只需要更新head_dir。