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

Программирование на Юнити.

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

Сообщение Prophet_Sunboy 07 апр 2019, 20:44

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

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

Сообщение lawson 08 апр 2019, 09:21

В общем объект не определяет какой именно из его коллайдеров сработал, но костылем наверное можно через сравнение ID коллайдера в ContactPoint.
lawson
UNIверсал
 
Сообщения: 481
Зарегистрирован: 14 сен 2012, 21:20

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

Сообщение waruiyume 08 апр 2019, 11:02

ContactPoint.thisCollider
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение Prophet_Sunboy 13 апр 2019, 18:51

waruiyume писал(а):ContactPoint.thisCollider

Спасибо за совет, но почитав документацию, так и не разобрался как оно работает. Можете помочь?
Prophet_Sunboy
UNец
 
Сообщения: 11
Зарегистрирован: 30 мар 2019, 23:19

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

Сообщение waruiyume 13 апр 2019, 19:37

Псевдокод:
Синтаксис:
Используется csharp
OnCollisionEnter(Collosion c)
{
    print(c.contacts[0].thisCollider)
}
 

Только заметил " висит не на этом теле"
Тогда то же самое, но otherCollider.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение Heliosis 21 апр 2019, 23:14

А нельзя сделать две дочерние пустышки с коллайдерами, их будет проще различать?
Или нужно именно на одном теле?
Heliosis
UNIт
 
Сообщения: 147
Зарегистрирован: 10 фев 2016, 20:50

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

Сообщение seaman 22 апр 2019, 09:39

Два ГО дочерние твоему телу, если не нужны отдельные меши - пустышки. На одном один коллайдер, на другом - второй.
Но обоих ГО скрипт
Синтаксис:
Используется 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) второй;
  ...
}
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7