Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Открыть дверь в unity. Очень прошу помочь!

Vyacheslav Знаток (344), открыт 3 недели назад
Помогите сделать так, чтобы дверь открывалась и спустя 10 секунд закрывалась сама. (Открывалась в смысле не как настоящая дверь, а просто исчезала и появлялась)
Есть такой код, который открывает дверь при нажатии кнопки:

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;
}
}
}

С языком таким никогда не работал .(Видео демонстрация того, как работает этот код..
1 ответ
Рустам Абдрашитов Мыслитель (9494) 3 недели назад
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`, чтобы изменить время, через которое дверь будет закрываться.
Похожие вопросы