Unity/John Lemon in Nightmareland

Unity Piscine Module06 - 6. 맵 구현

surkim 2024. 8. 26. 20:07

 

맵 제작

이번 맵 제작은 딱히 어려운 부분은 없었지만, 반복적인 작업이 많아 다소 귀찮았던 부분이 많았다.

방을 만들면서 혹시 나중에 랜덤으로 방을 배치해야 할 상황이 생길 수 있을 것 같아, 모든 방의 규격을 동일하게 맞추고 프리팹화시켜 관리했다. 덕분에 나중에 방을 조합하거나 재사용할 때 쉽게 사용할 수 있을 것 같다.

 

이번에 작성한 스크립트는 문을 여닫는 간단한 스크립트다. 문이 플레이어의 접근을 감지하면 열리고, 일정 시간이 지나면 자동으로 닫히도록 설정했다.

public class Door : MonoBehaviour
{
    private bool isOpen = false;
    private Animator animator;


    void Start()
    {
        animator = GetComponent<Animator>();
    }

    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            if (!isOpen)
            {
                animator.SetBool("IsOpen", true);
                isOpen = true;
                StartCoroutine(CloseDoor());

            }
        }
    }
    
    void OnTriggerStay(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            if (!isOpen)
            {
                animator.SetBool("IsOpen", true);
                isOpen = true;
                StartCoroutine(CloseDoor());

            }
        }
    }

    IEnumerator CloseDoor()
    {
        yield return new WaitForSeconds(3);
        animator.SetBool("IsOpen", false);
        isOpen = false;
    }
}

 

 

이 스크립트는 문에 트리거를 설정하여, 플레이어가 문 앞에 오면 문이 3초간 열리고 다시 닫히는 동작을 수행한다.

엔딩 방의 문은 별도의 스크립트를 작성하여, 플레이어가 G키를 눌렀을 때만 문이 열리도록 구현했다.

 

0
맵을 활보하고 있는 존 레몬씨

맵 탐험

맵을 돌아다니는 존 레몬을 테스트해보니 꽤 귀엽게 움직인다. 현재는 기본적인 맵 구조만 구현해둔 상태지만, 앞으로 더 디테일한 요소들을 추가할 예정이다.

피드백 및 수정 예정

투명화 처리된 오브젝트에 대한 피드백이 있었다. 현재 오브젝트가 투명해지는 범위가 다소 좁아 어색한 느낀이 난다. 이 부분은 나중에 맵을 전체적으로 다듬을 때 수정할 계획이다.