본문 바로가기
TIL

01.23 (TIL-Unity)

by 오랑이귀엽다 2024. 1. 23.

 

구현한 기능: 자동 문 닫힘 기능

  • 목적: 게임 내에서 문이 특정 시간이 지난 후 자동으로 닫히도록 하는 기능을 구현. 이를 통해 게임플레이에 현실성과 도전 요소를 추가하고, 플레이어의 상호작용에 따른 결과를 자연스럽게 표현.
  • 사용한 스크립트: SW_AutoCloseDoor
  • 구현 코드:
더보기

using System.Collections;
using UnityEngine;

public class SW_AutoCloseDoor : MonoBehaviour
{
    public DoorController doorController; // DoorController 스크립트에 대한 참조
    public GameObject door; // 자동으로 닫힐 문 객체
    public float autoCloseDelay = 2.0f; // 자동으로 닫히는 지연 시간 (초)
    private bool hasAutoClosed = false; // 문이 자동으로 닫힌 적이 있는지 확인하는 플래그

    void Update()
    {
        // 문이 열려 있고, 아직 자동으로 닫힌 적이 없으면 자동 닫힘 루틴 시작
        if (doorController.isOpening && !hasAutoClosed)
        {
            StartCoroutine(AutoCloseDoorRoutine());
        }
    }

    private IEnumerator AutoCloseDoorRoutine()
    {
        // 지정된 지연 시간만큼 기다림
        yield return new WaitForSeconds(autoCloseDelay);

        // 문을 원점으로 회전시켜 닫힘 상태로 만듬
        door.transform.localRotation = Quaternion.Euler(0, 0, 0);

        // 이후 문이 자동으로 닫힌 것으로 표시
        hasAutoClosed = true;
    }
}

  • 사용 이유: 플레이어가 문을 열고 일정 시간이 지난 후 자동으로 닫히는 기능은 게임의 몰입감을 높이고, 실제 환경과 유사한 상호작용을 제공하기 위함.

 

트러블슈팅

  1. 문제: 문이 360도 회전
    • 상황: 문이 자동으로 닫힐 때, 의도하지 않은 방향(360도 회전)으로 닫히는 문제 발생.
    • 원인: 문 닫힘 로직에서 로테이션 값이 적절히 설정되지 않아 발생.
    • 해결: 문의 로테이션 값을 (0,0,0)으로 명시적으로 지정하여 문이 원하는 방향으로 정상적으로 닫히도록 수정.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'TIL' 카테고리의 다른 글

01.25 (TIL-Unity)  (0) 2024.01.25
01.24 (TIL-Unity)  (0) 2024.01.24
01.22 (TIL-Unity)  (0) 2024.01.22
01.19(TIL-Unity)  (0) 2024.01.19
01.18 (TIL-Unity)  (0) 2024.01.18