구현한 기능: 자동 문 닫힘 기능
- 목적: 게임 내에서 문이 특정 시간이 지난 후 자동으로 닫히도록 하는 기능을 구현. 이를 통해 게임플레이에 현실성과 도전 요소를 추가하고, 플레이어의 상호작용에 따른 결과를 자연스럽게 표현.
- 사용한 스크립트: 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;
}
}
- 사용 이유: 플레이어가 문을 열고 일정 시간이 지난 후 자동으로 닫히는 기능은 게임의 몰입감을 높이고, 실제 환경과 유사한 상호작용을 제공하기 위함.
트러블슈팅
- 문제: 문이 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 |