오늘 한 일
Unity 튜토리얼 시스템 개선 (Trigger 기반 점프 튜토리얼)
작업 배경
NPC 대화 이후 플레이어에게 이동, 점프 같은 기본 조작을 알려주기 위해 튜토리얼 시스템을 구현했다.
초기에는 F 키로 대화와 튜토리얼을 모두 넘기는 구조였는데, 이로 인해 입력 충돌과 UX 문제가 발생했다.
기존 문제점
입력 키 충돌
F 키 하나로
NPC 상호작용
대화 넘기기
튜토리얼 넘기기
를 모두 처리
NPC 앞에서 튜토리얼 중 F를 누르면
강제적인 튜토리얼 UX
가만히 서서 F만 누르면 튜토리얼이 진행됨
“점프를 해보세요” 안내가 행동과 무관하게 진행됨
해결 방향
튜토리얼은 키 설명이 아니라
플레이어 행동을 유도해야 한다
그래서 튜토리얼을 다음처럼 분리했다.
이동(WASD) : NPC 대화 직후 UI 패널로 안내
점프(Space) :
최종 구조 설계
🎯 점프 튜토리얼 흐름
플레이어가 언덕 근처로 이동
Trigger 영역 진입
월드에 텍스트 표시
→ "Space Bar로 점프해보세요"
플레이어가 Space 입력
텍스트 제거 + 튜토리얼 종료
✔ F 키 사용 x
✔ 위치 + 행동 기반 튜토리얼 0
씬 구성
JumpTutorialZone
├─ BoxCollider (Is Trigger)
└─ JumpGuideText (TextMeshPro - 3D)
TextMeshProUGUI x
TextMeshPro (3D) 0
시작 시 텍스트는 비활성화
JumpTutorialTrigger.cs
using UnityEngine;
using TMPro;
public class JumpTutorialTrigger : MonoBehaviour
{
[SerializeField] private GameObject jumpGuideText;
private bool isActive = false;
private bool completed = false;
private void OnTriggerEnter(Collider other)
{
if (completed) return;
if (!other.CompareTag("Player")) return;
isActive = true;
jumpGuideText.SetActive(true);
}
private void OnTriggerExit(Collider other)
{
if (!other.CompareTag("Player")) return;
isActive = false;
jumpGuideText.SetActive(false);
}
private void Update()
{
if (!isActive || completed) return;
if (Input.GetKeyDown(KeyCode.Space))
{
CompleteTutorial();
}
}
private void CompleteTutorial()
{
completed = true;
jumpGuideText.SetActive(false);
Destroy(gameObject); // 한 번만 실행
}
}
x 튜토리얼을 키 입력으로만 넘기는 방식
0 Trigger + 행동 기반 튜토리얼
x 패널 띄워두고 F 연타
0 위치에 맞는 월드 텍스트 안내
“튜토리얼은 설명이 아니라
플레이어의 행동을 자연스럽게 유도하는 장치”