본문 바로가기

유니티

유니티2D 조이스틱 코드

728x90
반응형

using UnityEngine;
using UnityEngine.EventSystems;

public class Joystick : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandler
{
private RectTransform background; // 조이스틱 배경 이미지의 RectTransform
private RectTransform handle; // 조이스틱 핸들 이미지의 RectTransform
private Vector2 inputVector; // 조이스틱 입력 벡터

// 조이스틱 초기화
private void Start()
{
background = GetComponent<RectTransform>();
handle = transform.GetChild(0).GetComponent<RectTransform>();
}

// 조이스틱을 누르는 순간 호출됨
public void OnPointerDown(PointerEventData eventData)
{
OnDrag(eventData);
}

// 조이스틱 드래그 중 호출됨
public void OnDrag(PointerEventData eventData)
{
Vector2 pos;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(background, eventData.position, eventData.pressEventCamera, out pos))
{
// 조이스틱의 위치를 클릭한 위치로 이동
handle.localPosition = pos;

// 조이스틱 입력 벡터를 구함
inputVector = new Vector2(
handle.localPosition.x / (background.sizeDelta.x / 2),
handle.localPosition.y / (background.sizeDelta.y / 2)
);

// 조이스틱 입력 벡터의 크기를 1 이하로 제한
inputVector = (inputVector.magnitude > 1.0f) ? inputVector.normalized : inputVector;
}
}

// 조이스틱에서 손을 뗄 때 호출됨
public void OnPointerUp(PointerEventData eventData)
{
// 조이스틱의 위치를 원래 위치로 되돌림
handle.localPosition = Vector2.zero;
inputVector = Vector2.zero;
}

// 조이스틱 입력 벡터를 반환하는 메서드
public Vector2 GetInputVector()
{
return inputVector;
}
}

이제 위 코드를 참고하여, 게임 오브젝트에 Joystick 스크립트를 추가하고 조이스틱 배경 이미지와 핸들 이미지를 연결해주면 됩니다. GetInputVector 메서드를 이용하여 조이스틱 입력 벡터를 얻을 수 있습니다. 이 입력 벡터를 이용하여 캐릭터의 이동 방향, 속도 등을 제어할 수 있습니다.

728x90
반응형