Unity 3D Тригер

2075 / Unity / 3D / Тригер

Потрібна галочка Is Trigger
Реагує на Rigidbody, навіть коли isKinimatic = true

Reload LoadNextScene
Killzone LoadScene
Destroy DestroyShow
Teleport TwoWayTeleport

public int sceneNumber;

void OnTriggerEnter(Collider other) {
  if (other.tag == "Player")
  {
    UnityEngine.SceneManagement.SceneManager.LoadScene(sceneNumber);
  }
}




 

  • other – колайдер
  • other.name – назва
  • other.tag – назва групи ігрових об'єктів
  • other.gameObject – об'єкт
  • obj.activeSelf – чи об'єкт видимий
  • obj.SetActive(false) – зробити невидимим 
  • Destroy(this) – видалити скрипт
  • Destroy(obj, 3f) – знищити через 3 секунди
  • GetComponent<Light>().enabled = false – вимкнути світло
  • Destroy(GetComponent<BoxCollider>()) – видалити колайдер
  • SceneManager.LoadScene("Level 1") – перейти на сцену з назвою
  • Тригер може спрацьовувати двічі, особливо при великій швидкості

 



Щокадра
void OnTriggerStay(Collider other) {
  Debug.Log("Я тут. Я тут. Я тут...");
}

При виході
void OnTriggerExit(Collider other) {
  Debug.Log("Вийшов");
}

Без тригера
void OnCollisionEnter(Collision collision)  // Exit, Stay
{
  print(collision.gameObject.tag);
  if (collision.gameObject<GetComponent<Enemy>()){ // якщо на об'єкті є скрипт
    collision.gameObject<GetComponent<Enemy>().OnHit(); // визвати функцію чи life-=5 
  }
}