Вот так я бы справился с scenerio
Take
DoorHandler.cs
public class DoorHandler : MonoBehaviour {
public Door door;
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
door.OpenDoor();
}
}
}
Это должно быть прикреплено к Родителю двери.
Следующий дубль
Door.cs
public class Door : MonoBehaviour {
public bool isOpened = false;
public void OpenDoor()
{
if (!isOpened)
{
isOpened = true;
Debug.Log("OPEN");
//OPEN DOOR CODE!
}
}
}
Прикрепите это к Door
GameObject
NOTE
Иерархия будеткак DoorHandler-> Door-> DoorModel (где Door - это пустой стержень игрового объекта двери)
In DoorHandler
GameObjectприкрепите BoxCollider
и отметку IsTrigger
.
Также игрок ДОЛЖЕН ИМЕТЬ RIGIDBODY (предпочтительно Kinametic) и, очевидно,коллайдер
Итак, когда Player
войдет в коллайдер DoorHandler -> DoorHandler's OnTriggerEnter
сработает и, наконец, вызовет Door
to OpenDoor()