[C#, 유니티] Unity3D_RPG 상호작용

2022. 8. 25. 17:29코딩 2막 <C#개념편>

728x90

플레이어와 상호작용하는 오브젝트

RPG게임의 경우 플레이어가 특정 키를 눌렀을 때 앞에 있는 NPC와 대화를 하거나

아이템을 먹을 수 있는 등 다양한 상호작용할 수 있게 만들 수 있다


스크립트

 

1. IInteractable.cs

상호작용이 가능한 행동 하나로 관리(인터페이스 이용)

여러가지 함수 내에서 재정의하여 쓸 수 있음

1
2
3
4
5
6
7
8
9
10
11
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public interface IInteractable
{
    void OnFocused();
    void OnUnFocused();
    void Interaction();
}
 
cs

2. Box.cs

박스(오브젝트)와 상호작용하기 위한 작업

플레이어는 박스와 상호작용을 할 때 

아이템을 습득하는 것으로 재정의함

그리고 더이상 아이템이 없어서 컴포넌트가 사라지게 했음(Destroy(this))

 

박스에 파티클을 만들어 두고 OnFocused()와 OnUnFocused()를 써서 파티클이 상호작용에 따라 적용되도록 할 수 있음

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Box : MonoBehaviour, IInteractable
{
    public void Interaction()
    {
        Debug.Log("박스와 상호작용");
        QuestManager.Instance.ProgressQuest(Quest.Type.Gather, "Coin"5);
        Destroy(this);
    }
 
 
    public void OnFocused()
    {
 
    }
 
    public void OnUnFocused()
    {
        
    }
}
 
cs

npc와 상호작용하면 대화창이 뜨는 인터페이스를 만들 수도 있는데 대화 다이얼로그를 통해 적용시킬 수 있다

대화 다이얼로그는 내일 더 자세히 설명하겠습니다


박스와 상호작용하는 결과물

박스와 상호작용하는 모습

공감해주셔서 감사합니다

 

728x90