У меня есть игровой объект с жестким телом, а затем группа вспомогательных игровых объектов со спрайтами и коллайдерами, где каждый коллайдер прикреплен к жесткому телу родителя.
Это хорошо работает для физики и столкновений, поскольку вся группа объектов отскакивает и сталкивается с пейзажем.
Однако, когда две группы сталкиваются, я хочу, чтобы они наносили урон одному из отдельных объектов вспомогательной игры.
У меня есть OnCollisionEnter2D (Collision2D coll) на каждом из подчиненных объектов (на которых есть коллайдер), однако, когда они сталкиваются с другой группой, используя coll.gameObject, возвращаемый игровой объект всегда является родителем, а не отдельным субобъектом.
Long Story Short:
Есть ли способ получить игровой объект коллайдера, когда он прикреплен к другому игровому объекту с твердым телом?
Примечание. Я видел несколько решений, в которых для нахождения объекта используется лучевое наложение, но это кажется ненужной работой.
Примечание 2: я также видел варианты, которые используют триггер, но я предпочитаю столкновение, поскольку оно также обрабатывает физику.
private void OnCollisionEnter2D(Collision2D coll)
{
Debug.Log(coll.gameObject.name); // Showing the parent
ShipPiece sp = coll.gameObject.GetComponent<Piece>(); // Looking for the individual piece
if (sp != null)
{
// Apply the damage to the other piece based off the weight of this piece
coll.gameObject.SendMessage("ApplyDamage", weight*10);
}
}
Очевидно, что я могу сделать первую фигуру в столкновении, так как это класс, в котором существует OnCollisionEnter2D, но я не могу найти способ получить вторую фигуру, с которой она сталкивается.