본문 바로가기
유니티/유니티 기능 구현

유니티 3인칭 조이스틱 구현

by xortl98 2022. 4. 20.
728x90

 개요 

유니티 3인칭 조이스틱을 구현해보았다. 

 출처 

조이스틱은 베르님 유튜브를 참고하여 만들어 보았다. 

https://www.youtube.com/watch?v=MZHESbKQjpo 

 플레이 영상 

 

패키지  

3D_Joystick.unitypackage
0.21MB

 

 

 

스크립트 수정 

더보기

우측으로 카메라를 회전시키면서 했었는데 더 효율적인 코드를 발견하였다.

우측 조이스틱을 OFF 시킨 후 패널에 드래그 할 공간을 넣어놓은 뒤 밑의 스크립트를 넣어주면 

조이스틱 없이 패널 영역안에서 손가락을 드래그하면 회전이 된다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class CameraDragRotation : MonoBehaviour, IBeginDragHandler, IDragHandler
{
    [SerializeField]
    public Transform cameraArm;

    Vector3 FirstPoint;
    Vector3 SecondPoint;
    public float xAngle = 0f;
    public float yAngle = 55f;
    float xAngleTemp;
    float yAngleTemp;

    [SerializeField]
    private float limit_yAngle_lest = 0;
    [SerializeField]
    private float limit_yAngle_MAX = 70;

    public void OnBeginDrag(PointerEventData eventData)
    {
        BeginDrag(eventData.position);
    }

    public void OnDrag(PointerEventData eventData)
    {
        OnDrag(eventData.position);
    }

    public void BeginDrag(Vector2 a_FirstPoint)
    {
        FirstPoint = a_FirstPoint;
        xAngleTemp = xAngle;
        yAngleTemp = yAngle;
    }

    public void OnDrag(Vector2 a_SecondPoint)
    {
        SecondPoint = a_SecondPoint;
        xAngle = xAngleTemp + (SecondPoint.x - FirstPoint.x) * 180 / Screen.width;
        yAngle = yAngleTemp - (SecondPoint.y - FirstPoint.y) * 90 * 3f / Screen.height; // Y값 변화가 좀 느려서 3배 곱해줌.

        // 회전값을 40~85로 제한
        if (yAngle < limit_yAngle_lest)
            yAngle = limit_yAngle_lest;
        if (yAngle > limit_yAngle_MAX)
            yAngle = limit_yAngle_MAX;

        cameraArm.rotation = Quaternion.Euler(yAngle, xAngle, 0.0f);
    }
}

 

참고한 블로그

https://mentum.tistory.com/234

 

유니티 Touch로 카메라 회전 ( Unity Touch camera rotate )

EventSystems 는 IPointer 인터페이스 사용하려다가 남은것. 마우스 드래그 영역을 따로 정해줄거면 IPointer로 처리해야함. 1. 전처리문을 사용한 안드로이드, PC 플랫폼 분리 (구식방법) 1 2 3 4 5 6 7 8 9 10

mentum.tistory.com