본문 바로가기
TIL

01.30 (TIL-Unity)

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

오늘은 어제의 루프작업에 연장선이다.

 

구현한 기능: 루프 지점 제어 및 상호작용 스위치

  • 목적: 게임 내에서 플레이어가 특정 지점에 도달하면 다른 지점으로 이동하도록 하는 기능과, 이러한 '루프' 기능을 제어하는 상호작용 스위치를 구현.
  • 사용한 스크립트: SW_Loop 및 SW_LoopSwitch.
더보기

// SW_Loop: 플레이어가 지정된 트리거에 도달하면 루프 앤드 위치로 이동
IEnumerator FadeScreenAndTeleport(GameObject player) {
    // 화면을 어두워지게 하는 과정
    // 플레이어 위치 이동
    // 화면을 다시 밝게 만드는 과정
}

// SW_LoopSwitch: 플레이어가 상호작용할 때 등록된 루프 지점 오브젝트들을 제거
public void OnInteract() {
    if (isInteractable) {
        foreach (var loopPointObject in loopPointObjects) {
            Destroy(loopPointObject); // 각 루프 지점 오브젝트 제거
        }
        isInteractable = false; // 상호작용 비활성화
    }
}

사용 이유

게임 플레이에서 동적인 요소를 추가하고 플레이어의 경험을 다양화하기 위함. 루프 지점을 통해 게임 내 공간 활용의 참신성을 높일 수 있음

 

 

트러블슈팅: 위치 이동 충돌 문제

    • 왜(Why): 게임 내에서 플레이어의 위치 이동은 게임 플레이의 핵심 요소 중 하나입니다. 위치 이동이 제대로 작동하지 않으면, 게임의 진행에 심각한 장애를 일으킬 수 있으며, 플레이어의 경험에 부정적인 영향을 미칩니다. 따라서, 이 문제는 게임의 플레이어블리티와 사용자 경험에 직접적인 영향을 미치는 중요한 문제입니다.
    • 어떻게(How): 문제의 원인을 파악하기 위해, 플레이어의 위치 변경 로직과 관련된 여러 스크립트를 분석하였습니다. 이 과정에서, 플레이어의 물리적 이동을 담당하는 스크립트와 코루틴을 사용한 위치 변경 로직 사이에 충돌이 발생할 가능성을 발견하였습니다. 이 문제를 해결하기 위해, 코루틴을 사용하여 루프 기능 동안 플레이어의 다른 이동을 잠시 멈추게 하고, 이를 통해 위치를 안정적으로 변경할 수 있는 방법을 모색하였습니다.
    • 무엇(What): 코루틴을 사용하여 루프 기능이 실행되는 동안 플레이어의 이동을 잠시 멈추고, 해당 시간 동안 플레이어의 위치를 이동시키는 방식으로 문제를 해결하였습니다. 이 방법은 다른 이동 관련 스크립트와의 충돌을 방지하며, 위치 이동을 보다 안정적으로 수행할 수 있도록 하였습니다.

 

'TIL' 카테고리의 다른 글

02.08 (TIL-Unity)  (0) 2024.02.08
02.07 (TIL-Unity)  (1) 2024.02.07
01.29 (TIL-Unity)  (0) 2024.01.29
01.26 (TIL-Unity)  (0) 2024.01.26
01.25 (TIL-Unity)  (0) 2024.01.25