- using UnityEngine;
- public class PaddleController : MonoBehaviour
- {
- public Transform orb;
- public float radius;
- private Transform pivot;
- void Start()
- {
- pivot = orb.transform;
- transform.parent = pivot;
- transform.position += Vector3.up * radius;
- }
- void Update()
- {
- Vector3 orbVector = Camera.main.WorldToScreenPoint(orb.position);
- orbVector = Input.mousePosition - orbVector;
- float angle = Mathf.Atan2(orbVector.y, orbVector.x) * Mathf.Rad2Deg;
- pivot.position = orb.position;
- pivot.rotation = Quaternion.AngleAxis(angle - 90, Vector3.forward);
- }
- }
마우스가 움직임에 따라 그 마우스의 각도에 맞게 orb 주위를 paddle이 회전하는 스크립트인데요
딴건 다 대충 이해가 되는데 Quaternion.AngleAxis(angle - 90, Vector3.forward)
요게 이해가 안돼요.. 글씨는 왜 초록색인지 모르겠는데
일단, 아크탄젠트를 구하는 건 유니티 상의 x,y축을 좌표평면으로 보고 구하면 되는건가요?
그 고딩때 했던, 벡터 끝점에서 x축에 수선 내리고 원점이랑 이어서 삼각형 만드는거 맞죠?
그리고 angle이 아크탄젠트로 구한 각도잖아요? 거기서 90도는 왜 빼는거쥬?
90도 빼는거면 각도 시작점 때문인가 근데 난 왜 코드가 오른쪽으로 안넘겨지냐 ㅜㅜ @
일반적으로 x-x' 평면이 0 도인데 유니티는 y-y' 평면이 0 도이기 때문인거 같은데. 잘 모르겠이면 디버그.로그 때려 넣어서 수치확인해라 짱돌머리야.
흠. 일반적인 각도에서 -90 해야 유니티 각도가 나온다.
짱돌머리 맞음..ㅠ 너무 어렵다 유니티 수학
여튼 감사해요 형 ㅎ
그냥 수학시간 그래프를 그려보시면 atan으로 0도가 나왔다고 치면 3시방향이거든요? 90도를 빼줘야 12시방향 이에요.
12시 방향으로 만들어줘야 하는게 윗분이 말했듯이 y평면이 0도이기 때문이죠?