Примеры скриптов для событий коллайдера
Следующие примеры демонстрируют способы вызова событий из коллизионных функций. Они используют OnCollisionEnter и OnTriggerEnter соответственно, но концепции применимы ко всем функциям OnCollision и OnTrigger.
Пример: Различные события для разных свойств GameObject
Вы можете настроить свои скрипты для запуска различных событий на основе свойств ассоциированного GameObject другого коллайдера, таких как его имя или тег. Это полезно, если, например, вы хотите разрешить некоторым коллайдерам производить событие, но не другим.
В следующем примере печатается различное сообщение в зависимости от того, имеет ли другой коллайдер, который коснулся этого коллайдера, метку "Игрок" или "Враг".
using UnityEngine;
using System.Collections;
public class DoorObject : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Debug.Log ("The player character has touched the door.");
}
if (other.CompareTag("Enemy"))
{
Debug.Log ("An enemy character has touched the door!");
}
}
}
Пример: Отправлять сообщение о событии при каждом обновлении физики
В следующем примере используется коллайдер триггеров для создания ховерпада. Коллайдер триггеров расположен непосредственно над ховерпадом GameObject, и применяет постоянную силу вверх к любому GameObject внутри своего триггера.
using UnityEngine;
using System.Collections;
public class HoverPad : MonoBehaviour
{
// define a value for the upward force calculation
public float hoverForce = 12f;
// whenever another collider is in contact with this trigger collider…
void OnTriggerStay (Collider other)
{
// …add an upward force to the Rigidbody of the other collider.
other.rigidbody.AddForce(Vector3.up * hoverForce, ForceMode.Acceleration);
}
}