2013-12-03 4 views
1

Я пытаюсь обнаружить столкновение между characterController и платформой (a rigidBody + boxCollider) в проекте Unity.Столкновения между CharacterController и BoxCollider

Я знаю, что я могу использовать эту функцию в объекте characterController:

void OnControllerColliderHit(ControllerColliderHit hit) { 
    // [...]; 
} 

Но я бы сильно, а обнаружить его в объекте платформы, для того, чтобы попытаться сохранить код более понятным. Что-то вроде этого:

void OnCollisionEnter(Collision c) { 
    Debug.Log(c.gameObject.tag); 
} 

Но это не работает! Я искал в форумах Unity и, видимо, единственный способ обнаружить столкновение - установить boxCollider в свойстве isTrigger как True и вместо этого использовать метод .OnTriggerEnter(Collider c). Тем не менее, это приведет к тому, что игрок упадет через платформу, что, очевидно, не может произойти.

Хорошо, поэтому мой вопрос: есть ли другой способ сделать это - без настройки isTrigger как True - и обнаружение столкновения в объекте платформы?

Спасибо!

ответ

1

То, как я справлялся с подобной проблемой с платформой и контроллером символов, заключается в добавлении дочернего объекта к платформе с коллайдером триггера, установленным в большем размере, чем сама платформа (подумайте об этом как о невидимой коробке ваша платформа). Это позволяет узнать, будет ли ваш игрок попадать на платформу, направление, из которого он идет, и т. Д. Тогда просто отправить сообщение на платформу с необходимой информацией parentPlatformObject.SendMessage(params)

+0

Да, это сработало ! Выглядит немного уродливо, но это будет сделано. Спасибо. – ldavid

Смежные вопросы