본문 바로가기

이전 게시물들/유니티

유니티 가상 조이스틱(브롤 스타즈 방식)

 

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);
        }
    }
}

'이전 게시물들 > 유니티' 카테고리의 다른 글

C# List 주요 함수  (0) 2020.05.28
리지드바디와 이동, 회전, 애니메이션  (0) 2020.04.28
ToBeCuBe에 사용된 옵션 세팅  (0) 2020.04.19
플렛폼 구분  (0) 2020.04.19
오브젝트 풀링  (0) 2020.04.18