티스토리 뷰

터치 혹은 마우스 클릭으로 회전 시키고 싶은 타겟의 중심 기준 원을 그리면 타겟이 입력에 따라 회전하게되는 코드입니다. GetAngle 함수를 통해 타겟의 중심인 피벗과 입력(마우스 혹은 터치)의 각도(0~360 범위)를 구하고 구한 각도의 이전 값과 현재 값의 차를 통해 구한 변화량을 타겟의 각도 값에 대입하여 타겟을 회전시킵니다.  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using UnityEngine;
 
public class CircleGesture : MonoBehaviour {
 
    public Transform target;
    float previous;
    float current;
 
    private void Update()
    {
        CircleGestureRotate();
    }
    private void CircleGestureRotate()
    {
        if (Input.GetMouseButtonDown(0))
        {
            previous = 0;
            current = 0;
        }
 
        if (Input.GetMouseButton(0))
        {
            previous = current;
            current = GetAngle(target.position, Camera.main.ScreenToWorldPoint(Input.mousePosition));
            if (previous != 0.0f)
            {
                float diffrence = current - previous;
                target.Rotate(00, diffrence);
            }
        }
    }
 
    public float GetAngle(Vector3 vStart, Vector3 vEnd)
    {
        Vector3 v = vEnd - vStart;
        float angle = Mathf.Atan2(v.y, v.x) * Mathf.Rad2Deg;
        if (angle < 0) angle += 360;
        return angle;
    }
}
 
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함