Можно ли совершить полукруглое столкновение в Годо? - PullRequest
0 голосов
/ 02 июля 2019

Я сделал полукруглую 2D фигуру в Годо.Сейчас я пытаюсь придать ему правильные коллизии.До сих пор я не нашел способа сделать это.Узел CollisionShape2D допускает только простые формы, такие как круги и прямоугольники, а форма CollisionPolygon2D не позволяет мне изгибать нужную мне форму.Есть ли способ, как я могу получить правильные столкновения?

1 Ответ

0 голосов
/ 11 июля 2019

Я не знаком со встроенной функцией, которая делает это.

Однако вы можете сделать две вещи:

  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.

...