Я делаю 2 игровых объекта, движущихся навстречу друг другу. Объекты имеют твердые тела2D и коллайдеры2D. При столкновении я хочу получить точки контакта на внешней стороне коллайдеров. Это может быть до 8 баллов. Сейчас Мои объекты сталкиваются, но я получаю только одну Контактную точку, которая выглядит как Среднее из Контактных точек или перекрывающейся области.
Как я могу получить каждое очко?
private ContactPoint2D[] contacts = new ContactPoint2D[10];
void OnCollisionStay2D(Collision2D collision)
{
collision.collider.GetContacts(contacts);
foreach (ContactPoint2D contact in contacts)
{
Vector2 hitPoint = contact.point;
if (hitPoint != testVector)
{
TestMarker.transform.position = new Vector3(hitPoint.x, hitPoint.y, -5.0f);
}
Debug.Log(hitPoint.ToString());
};
}
Так, как на следующем рисунке видно, я хотел бы отслеживать точки соприкосновения двух объектов. Зеленый квадрат начинается в точке, где два объекта попадают друг на друга в первый раз, а затем перемещается в центр, как среднее значение или что-то еще.
Это нормальное поведение?

Как я могу получить все контактные точки вместо этого?