1. Создайте новый скрипт C# и назовите его, например, `DoorController`.
2. Откройте скрипт и добавьте следующий код:
using System.Collections;
using UnityEngine;
public class DoorController : MonoBehaviour
{
public float timeToClose = 10f;
public void OpenDoor()
{
gameObject.SetActive(false);
StartCoroutine(CloseDoorAfterDelay());
}
private IEnumerator CloseDoorAfterDelay()
{
yield return new WaitForSeconds(timeToClose);
gameObject.SetActive(true);
}
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
OpenDoor();
}
}
}
3. Примените этот скрипт к объекту двери в вашей сцене, перетащив скрипт на объект или добавив его через инспектор.
4. Убедитесь, что у вас есть способ вызова метода `OpenDoor()`, например, через триггер или кнопку. Вы можете сделать это так:
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
OpenDoor();
}
}
5. Не забудьте настроить тег "Player" на вашем игровом персонаже, если используете триггер.
Теперь, когда игрок взаимодействует с дверью (например, входит в триггер), дверь исчезнет и через 10 секунд появится вновь. Вы можете настроить `timeToClose`, чтобы изменить время, через которое дверь будет закрываться.
Есть такой код, который открывает дверь при нажатии кнопки:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Door : MonoBehaviour
{
public Transform posOpen;
public Transform posDefault;
bool open = false;
public void OpenDoor()
{
if (open == false)
{
transform.position = posOpen.transform.position;
open = true;
}
}
public void CloseDoor()
{
if (open == true)
{
transform.position = posDefault.transform.position;
open = false;
}
}
}
С языком таким никогда не работал .(Видео демонстрация того, как работает этот код..