zyeon's 작심삼일 코딩 공부
대화·퀘스트 시스템 - (1) NPC 설정, 플레이어 레이캐스트 본문
전체적인 코드는 유튜브 골드메탈을 참고했다.
잘 안보이겠지만 마젠타 색상의 얇은 선이 레이캐스트이다.
레이 캐스트로 'NPC' 태그 된 오브젝트 스캔 시 대화 버튼을 활성화 해주자.
public class NPCData : MonoBehaviour
{
public int id;
public string ObjName;
}
우선 NPC에 id와 이름을 설정하기 위해서 스크립트를 만들어준다.
그 다음 NPC로 설정할 오브젝트의 태그를 'NPC'로 설정해주고, 정보도 넣어준다.
이제 플레이어에서 레이캐스트로 NPC 오브젝트를 스캔할 수 있게 해준다.
/* PlayerMove.cs */
[SerializeField] GameObject m_dialogueStartBtn; // 대화 시작 버튼
GameObject m_scanObject = null; // 플레이어가 스캔하고 있는 오브젝트
private void FixedUpdate()
{
ScanObjecct();
}
//레이캐스트로 NPC 오브젝트 스캔
void ScanObjecct()
{
Debug.DrawRay(m_rigidbody.position, m_dirVec * 1.5f, new Color(1, 0, 1));
RaycastHit rayHit;
if (Physics.Raycast(transform.position, m_dirVec, out rayHit, 1.5f))
{
if (rayHit.collider.tag == "NPC")
{
m_scanObject = rayHit.collider.gameObject;
m_dialogueStartBtn.SetActive(true);
}
}
else
{
m_scanObject = null;
m_dialogueStartBtn.SetActive(false);
}
}
//대화 버튼 동작
public void DialogueButton()
{
if (m_scanObject != null)
{
UIManager.Instance.DialogueAction(m_scanObject);
}
}
싱글톤 매니저로 작성 된 UIManager DialogueAction()에 스캔한 오브젝트를 전달 해
저장 되어있는 정보들로 대화 가능하게 해줄 것 이다.
'unity' 카테고리의 다른 글
대화·퀘스트 시스템 - (3) 대화문 출력 (0) | 2024.09.12 |
---|---|
대화·퀘스트 시스템 - (2) 대화문 저장 (0) | 2024.09.12 |
플레이어 상태, 상태 머신 (0) | 2024.09.12 |
2.5D 게임에서 캐릭터 이동 구현 (0) | 2024.08.28 |
오브젝트 풀링 (오브젝트 풀 패턴) (0) | 2024.08.24 |