public RectTransform handle;
public RectTransform outLine;
private float deadZone = 0;
private float handleRange = 1;
private Vector3 input = Vector3.zero;
private Canvas canvas;
public float Horizontal { get { return input.x; } }
public float Vertical { get { return input.y; } }
void Start()
{
canvas = GameObject.Find("Canvas").GetComponent<Canvas>();
outLine = gameObject.GetComponent<RectTransform>();
}
public void OnPointerDown(PointerEventData eventData)
{
OnDrag(eventData);
}
public void OnDrag(PointerEventData eventData)
{
Vector2 radius = outLine.sizeDelta / 2;
input = (eventData.position - outLine.anchoredPosition) / (radius * canvas.scaleFactor);
HandleInput(input.magnitude, input.normalized);
handle.anchoredPosition = input * radius * handleRange;
}
private void HandleInput(float magnitude, Vector2 normalised)
{
if (magnitude > deadZone)
{
if (magnitude > 1)
{
input = normalised;
}
}
else
{
input = Vector2.zero;
}
}
public void OnPointerUp(PointerEventData eventData)
{
input = Vector2.zero;
handle.anchoredPosition = Vector2.zero;
}
}
이케 짜고 handle 에는 조이스틱 래버
outLine에는 조이스틱 몸체 이미지 넣어놨는데
실행해도 래버가 안움직임.
다른 프로젝트에서 썼을때는 분명 잘 됐던거 같은데 뭘 놓쳤을까
아 알았다 스크립트를 몸체가 아니라 래버에 넣어놨어야 했네
ㅈㅅㅈㅅ
어 뭐야 그래도 안되네.... 실행해보니까 아웃라인에 래버가 들어감
, IDragHandler, IPointerUpHandler, IPointerDownHandler를 뺏었네