Страница 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) второй;
...
}