OnCollision события
Столкновения происходят, когда два коллайдера, не имеющих пусковых механизмов, контактируют между собой.
Примеры использования для столкновений включают:
- Когда снаряд попадает в цель, уничтожайте как снаряд, так и противника.
- Когда персонаж игрока касается двери, запускает анимацию, чтобы открыть дверь.
- Когда персонаж игрока касается бонуса, увеличивает размер игрока.
Работа с столкновениями в основном включает следующие функции API:
Collider.OnCollisionEnter: Unity вызывает эту функцию на каждом коллайдере, когда два коллайдера впервые соприкасаются.Collider.OnCollisionStay: Unity вызывает эту функцию на каждом коллайдере один раз за обновление физики, пока два коллайдера находятся в контакте.Collider.OnCollisionExit: Unity вызывает эту функцию на каждом коллайдере, когда два коллайдера прекращают контакт.
В случае столкновений по крайней мере один из объектов должен иметь динамическое физическое тело (т.е. Rigidbody или ArticulationBody которая имеет Кинематическое Если оба GameObjects в столкновении являются кинематические физические тела, столкновение не вызывает OnCollision функции.
Следующий пример отображает сообщение в консоли при вызове каждой функции Unity.
using UnityEngine;
using System.Collections;
public class DoorObject : MonoBehaviour
{
// “other” refers to the collider that is touching this collider
void OnCollisionEnter (Collision other)
{
Debug.Log ("A collider has made contact with the DoorObject Collider");
}
void OnCollisionStay (Collision other)
{
Debug.Log ("A collider is in contact with the DoorObject Collider");
}
void OnCollisionExit (Collision other)
{
Debug.Log ("A collider has ceased contact with the DoorObject Collider");
}
}
Для примеров практического применения событий OnCollision, см. примеры скриптов для событий коллайдера.