Столкновение edgecollider2d при порождении сплайна
В моем проекте Unity (2D-игра) я собираю точки, в которых пользователь двигает палец, а затем делаю сплайн из собранных точек с использованием алгоритма catmull rom, а затем созданный сплайн представляется пользователю с использованием linerenderer. Кроме того, я создаю краевой коллайдер с теми же точками, что и при использовании линейного рендера. Моя цель - определить, проведена ли линия в "ограниченной" области и, если да, удалить этот сплайн. Я пробовал разные комбинации коллайдеров и жестких тел на ограниченной области и сплайне, но я не могу получить точку столкновения между ними. OnTriggerEnter2D и OnCollisionEnter2D для меня бесполезны, потому что я хочу проверять коллизию по требованию при создании сплайна
TLDR; я хочу знать, сталкивается ли edgecollider2d с gameobject (sprite и collider2d), но не могу этого достичь
РЕДАКТИРОВАТЬ: теперь я жду исправленного upadte перед проверкой коллизий, это помогло, и у меня есть журнал отладки "ограниченной области", когда мой коллайдер пересекает сплайн на ограниченном слое, но из функции overlapCollider я ничего не получаю
//
IEnumerator CheckForCollision()
{
yield return new WaitForFixedUpdate();
int layer = (1 << LayerMask.NameToLayer("Restricted"));
if(edgeCol.IsTouchingLayers(layer))
{
Debug.Log("restricted area");
}
else
{
Debug.Log("ok");
}
Collider2D[] tab = new Collider2D[10];
ContactFilter2D filter = new ContactFilter2D();
filter.useTriggers = true;
filter.useLayerMask = true;
filter.layerMask = layer;
int overlaps = Physics2D.OverlapCollider(edgeCol, filter, tab);
Debug.Log(overlaps);
if (overlaps > 0)
{
foreach(Collider2D col in tab)
{
if(col.transform.gameObject != null)
{
Debug.Log(col.transform.gameObject.name);
}
}
}
yield return null;
}
РЕДАКТИРОВАТЬ 2: Таким образом, по-видимому, OverlapCollider работает только тогда, когда один коллайдер полностью внутри другого коллайдера, я использовал GetContacts и получить то, что я хотел