하이어라키 뷰에 Canvas를 생성합니다.
Canvas의 Render Mode를 Screen Space - Camera로 설정합니다.
하이어라키뷰의 메인 카메라를 Render Camera에 넣어줍니다.
Canvas에 Image를 추가합니다.
Image에 Source Image를 넣어줍니다.
생성한 Image에 Box collider 2D를 만들어주고 콜라이더의 크기를 적절하게 크게 만들어줍니다.
그리고 아래의 소스를 넣고, 움직일 플레이어와 스피드를 넣어줍니다.
using UnityEngine;
using System.Collections;
public class joystick : MonoBehaviour
{
public GameObject player;
public float speed;
bool checkstick;
Vector3 Old_Pos;
Vector3 min;
Vector3 max;
// Use this for initialization
void Start()
{
Old_Pos = transform.localPosition;
min = Camera.main.WorldToScreenPoint(transform.GetComponent<Collider2D>().bounds.min);
max = Camera.main.WorldToScreenPoint(transform.GetComponent<Collider2D>().bounds.max);
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
if (Input.mousePosition.x > min.x && Input.mousePosition.x < max.x && Input.mousePosition.y > min.y && Input.mousePosition.y < max.y)
{
checkstick = true;
}
}
if (checkstick)
{
Vector2 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = pos;
Vector3 dir = transform.localPosition - Old_Pos;
dir.Normalize();
Debug.Log(dir);
player.transform.Translate(dir * speed * Time.smoothDeltaTime, Space.World);
}
if (Input.GetMouseButtonUp(0))
{
checkstick = false;
transform.localPosition = Old_Pos;
}
}
}