находится большой TileMap, состоящий из горизонтальных и вертикальных граней. Он имеет Composite Collider 2D. Если квадрат столкнётся с вертикальной стороной TileMap, то квадрат должен быть уничтожен. А если столкнётся с горизонтальной стороной, то просто должен остановиться. Вопрос в том, как определить какая это сторона - вертикальная или горизонтальная? Есть ли возможность это сделать или надо как-то по другому решать этот вопрос?
void OnCollisionEnter2D(Collision2D collision) collision.point[0] (как-то таквроде можно найти точку соприкосновения из нее угол посчитать)
Точку столкновения я могу найти. Вопрос именно в том, как найти угол?
vector2.angle
Как я понимаю, для этого оператора нужно две вершины TileMap ближайшие к точке столкновения. Но как их найти?
Можешь просто посмотреть где точка относительно коллайдера персонажа находится, слева/справа или сверху/снизу
проверяй позицию тайла, если он правее по X, и выше нижнего края квадрата по Y, значит дестрой
Не получится. Вот на рисунке в обоих случаях точка столкновения справа и снизу одновременно
TileMap на сцене - это большой составной объект. Поэтому его центр ничем не поможет
https://docs.unity3d.com/ScriptReference/Tilemaps.Tilemap.GetCellCenterWorld.html
относительно направление считай
не прокатит, у него в обоих случаях может быть вектор вниз/вправо
А нормали у 2дКолижна нет?
На квадрате - BoxCollider2d. А на TileMap - TilemapCollider и CompositeCollider2D
Обсуждают сегодня