현재 게임을 만들고 있다.
선을 그려서 캐릭터를 그 선 위에 데굴데굴 굴러가는 형태였지만,
지금은 드래그를 통해 캐릭터를 이동시키는 걸로 기획이 변경됐다.
작업물을 보자.

캔버스를 통해 유저의 인풋을 받는다.
IBeginDragHandler, IEndDragHandler 이벤트를 통해 처음과 끝의 드래그 벡터 값을 받고
(끝 드래그 위치) - (처음 드래그 위치) 를 한다. 그러면 처음 -> 끝으로 향하는 벡터 값이 나온다.
아래는 코드이다. 본문외 다른 내용이 담긴 코드는 날렸다.
public class UserInputHandler : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
private Vector2 startTouchPosition;
public void OnBeginDrag(PointerEventData eventData)
{
Vector3 worldPoint = Camera.main.ScreenToWorldPoint(eventData.position);
startTouchPosition = worldPoint;
}
public void OnDrag(PointerEventData eventData)
{
Vector2 currentFingerPosition = Camera.main.ScreenToWorldPoint(eventData.position);
}
public void OnEndDrag(PointerEventData eventData)
{
Vector2 currentFingerPosition = Camera.main.ScreenToWorldPoint(eventData.position);
MoveFineDustByPositions(startTouchPosition, currentFingerPosition);
}
private void MoveFineDustByPositions(Vector2 start, Vector2 end)
{
Vector2 firstToSecond = end - start;
fineDustRigidBody.AddForce(firstToSecond, ForceMode2D.Impulse);
}
}