Кинематические2d соприкосновение Area2D?

#godot

Вопрос:

Я хочу определить, касается ли кинематическое тело области. Я знаю, как работает сигнал ввода тела, и я знаю, как определить, когда кинематическое тело входит в зону, но как я могу продолжать обнаруживать столкновение, пока тела все еще соприкасаются?

Я не хочу запускать код только тогда, когда тела впервые сталкиваются, я хочу запускать его до тех пор, пока они соприкасаются.

Ответ №1:

Одним из решений является создание «пула» объектов, находящихся в столкновении, таких как:

 func _on_body_entered(_body):
  colliding_pool.append(_body)

func _on_body_exited(_body):
  # this is optional and depends on your case
  if colliding_pool.has(_body) and is_instance_valid(_body):
    colliding_pool.erase(_body)
 

Затем вы можете включить в свой цикл обработку, если возникнут конфликты, основанные на том, что этот пул не пуст. Вы также можете сохранить его в одной переменной, а не в массиве объектов, эту часть лучше адаптировать в зависимости от ваших потребностей.