이전 게시물들/유니티
유니티 가상 조이스틱(브롤 스타즈 방식)
joypoolstudio
2020. 4. 29. 14:56
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class VirtualJoystick : MonoBehaviour
{
public GameObject virtualJoystickBG;
public GameObject virtualJoystick;
public float maxMagnitude;
public static Vector3 input { get; set; }
private Vector3 downPos;
private Vector3 dragPos;
private Vector3 dir;
private float magnitude;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if(Input.GetMouseButtonDown(0))
{
downPos = Input.mousePosition;
virtualJoystickBG.transform.position = downPos;
virtualJoystickBG.SetActive(true);
}
if(Input.GetMouseButton(0))
{
dragPos = Input.mousePosition;
dir = Vector3.Normalize(dragPos - downPos);
magnitude = Vector3.Magnitude(dragPos - downPos);
if(magnitude > maxMagnitude)
{
downPos += dir * (magnitude - maxMagnitude);
virtualJoystickBG.transform.position = downPos;
}
input = dir * magnitude / maxMagnitude;
input = new Vector3(input.x, 0f, input.y);
virtualJoystick.transform.position = downPos + dir * magnitude;
}
if (Input.GetMouseButtonUp(0))
{
input = Vector3.zero;
virtualJoystickBG.SetActive(false);
}
}
}