Unity의 재고 없는 픽 앤 드롭 시스템
이 튜토리얼에서는 인벤토리 시스템을 사용하지 않고 Unity에 간단한 픽 앤 드롭 시스템을 만들어 보겠습니다. 이 시스템을 통해 플레이어는 환경에서 개체를 집어 다른 위치에 떨어뜨릴 수 있습니다.
전제 조건
- Unity 허브 설치됨
- Unity 편집기(버전 2019 이상)
- C#에 대한 기본 지식
프로젝트 설정
- Unity 허브를 열고 새 Unity 프로젝트를 만듭니다.
- 상호작용할 플레이어 캐릭터와 일부 개체로 장면을 설정하세요.
Pick and Drop 시스템 구현
1단계: 픽업 스크립트 만들기
using UnityEngine;
public class Pickup : MonoBehaviour
{
private Transform heldObject;
private Vector3 offset;
void Update()
{
if (heldObject != null)
{
MoveHeldObject();
CheckDrop();
}
else
{
CheckPickup();
}
}
void MoveHeldObject()
{
Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
heldObject.position = new Vector3(mousePosition.x + offset.x, mousePosition.y + offset.y, 0);
}
void CheckPickup()
{
if (Input.GetMouseButtonDown(0))
{
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if (hit.collider != null && hit.collider.CompareTag("Pickup"))
{
heldObject = hit.transform;
offset = heldObject.position - Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
}
}
void CheckDrop()
{
if (Input.GetMouseButtonDown(1))
{
heldObject = null;
}
}
}
2단계: 픽업 개체에 태그 추가
"Pickup" 태그를 사용하여 플레이어가 집을 수 있게 하려는 개체에 태그를 지정하세요.
- 장면에서 개체를 선택합니다.
- Inspector 창에서 "Tag" 드롭다운을 클릭합니다.
- "Add Tag"를 선택하고 "Pickup"을 입력합니다.
- 개체에 태그를 적용합니다.
3단계: 시스템 테스트
- "Pickup" 태그가 있는 일부 개체를 장면에 추가합니다.
- Unity에서 장면을 재생합니다.
- 태그가 붙은 개체를 클릭하면 줍습니다.
- 마우스 오른쪽 버튼을 클릭하면 고정된 개체를 놓을 수 있습니다.
결론
Unity에서 인벤토리를 사용하지 않고 간단한 픽 앤 드롭 시스템을 성공적으로 구현했습니다. 이 시스템을 사용하면 플레이어는 장면의 개체를 집어 들고 다른 위치에 놓아서 상호 작용할 수 있습니다. 객체 스냅, 객체 회전 또는 더 복잡한 상호 작용과 같은 기능을 추가하여 이 시스템을 자유롭게 확장하세요.