오늘은 어제의 루프작업에 연장선이다.
구현한 기능: 루프 지점 제어 및 상호작용 스위치
- 목적: 게임 내에서 플레이어가 특정 지점에 도달하면 다른 지점으로 이동하도록 하는 기능과, 이러한 '루프' 기능을 제어하는 상호작용 스위치를 구현.
- 사용한 스크립트: 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 |