Страница 1 из 1

2 коллайдера на 1 теле

СообщениеДобавлено: 07 апр 2019, 20:44
Prophet_Sunboy
Доброго времени суток.
У меня на теле есть 2 коллайдера, при прикосновении к первому должно происходить одно событие, к второму - другое. Как их в скрипте отличить друг от друга?
p.s. скрипт висит не на этом теле.

Re: 2 коллайдера на 1 теле

СообщениеДобавлено: 08 апр 2019, 09:21
lawson
В общем объект не определяет какой именно из его коллайдеров сработал, но костылем наверное можно через сравнение ID коллайдера в ContactPoint.

Re: 2 коллайдера на 1 теле

СообщениеДобавлено: 08 апр 2019, 11:02
waruiyume
ContactPoint.thisCollider

Re: 2 коллайдера на 1 теле

СообщениеДобавлено: 13 апр 2019, 18:51
Prophet_Sunboy
waruiyume писал(а):ContactPoint.thisCollider

Спасибо за совет, но почитав документацию, так и не разобрался как оно работает. Можете помочь?

Re: 2 коллайдера на 1 теле

СообщениеДобавлено: 13 апр 2019, 19:37
waruiyume
Псевдокод:
Синтаксис:
Используется csharp
OnCollisionEnter(Collosion c)
{
    print(c.contacts[0].thisCollider)
}
 

Только заметил " висит не на этом теле"
Тогда то же самое, но otherCollider.

Re: 2 коллайдера на 1 теле

СообщениеДобавлено: 21 апр 2019, 23:14
Heliosis
А нельзя сделать две дочерние пустышки с коллайдерами, их будет проще различать?
Или нужно именно на одном теле?

Re: 2 коллайдера на 1 теле

СообщениеДобавлено: 22 апр 2019, 09:39
seaman
Два ГО дочерние твоему телу, если не нужны отдельные меши - пустышки. На одном один коллайдер, на другом - второй.
Но обоих ГО скрипт
Синтаксис:
Используется csharp
public class CheckCollider : Monobehaviour{
  public int id;
}

В инспекторе назначаешь id разные
В твоем скрипте
Синтаксис:
Используется csharp
void OnCollisionEnterCollision collision){
  var other = collision.gameObject.GetComponent<Collision collision>();
  if(other.id = 0) первый коллайдер;
  if(other.id = 0) второй;
  ...
}