티스토리 뷰
터치 혹은 마우스 클릭으로 회전 시키고 싶은 타겟의 중심 기준 원을 그리면 타겟이 입력에 따라 회전하게되는 코드입니다. 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(0, 0, 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 |
댓글