ransform.rotation에는 단순히 오브젝트의 회전"값"에 대한것이고 transform.Rotate가 +=의 개념이 들어 있어 update함수같은 곳에 넣어주면 회전하게 되는 것이다. 지금 오브젝트의 x,y,z의 회전값=transform.rotation
1줄 요약: 오브젝트를 원하는 x,y,z로 회전할거면 rotation x,y,z씩 회전할거면 Rotate
transform.Rotate(0,30,0) == (transform.rotation=Quaternion.Eular(0,30,0))
위의 코드 언듯 보기엔 같아 보이나 같지 않다.
transform.rotation=Quaternion.Eular(0,30,0) 을 하면 옆에 보이는 Rotation에 x,y,z가 0,30,0이 된다. 따라서 만약에 이 트랜트폼이 붙어있는 캐릭터의 회전값(지금 현재 인스펙터 창에 보이는 값)을 얻고 싶다면
transform.eulerAngles 을 이용하면 된다.
transform.Rotate(0,30,0)은 위에서도 설명했듯이 '더하기'의 개념이다. 따라서 transform.Rotate(0,30,0)을 하면 옆에 보이는 인스펙트창의 트랜스폼이 0,30,0이 되는게 아니라 30+0,3.69999+30,0.65429+0 이 된다.
Eular는 파라미터로 들어온 벡터의 오일러 값을 쿼터니언으로 바꿔주는 함수이다.
Quaternion.Euler(x: float , y: float, z: float) :오일러는 절대각도를 의미.
파라미터로 들어온 벡터의 오일러 값을 쿼터니언으로 바꿔주는 함수이다. 파라미터는 주로 벡터나 실수.
쿼터니언의 요소로 x,y,z,w가 있는데 w는 모르겠음. 게임 만들 때 그닥 중요한 아닌듯..
Euler(벡터도 가능)는 말 그대로 파라미터 만큼 회전을 의미.
이걸 transform.rotation에 대입하면 그 각도로 transform컴퍼넌트의 rotation이 변하는 것을 알 수 있다.
Quaternion.LookRotation(벡터값) : 벡터값을 넣으면 그 벡터 방향!!!!에 대한 회전 값 생성
ex) Vector3 relativePos = target.position - transform.position;//자기자신에서 타겟을 바라보는 벡터 생성
Quaternion rotation = Quaternion.LookRotation(relativePos);//그 벡터에 대한 회전 값 생성해서 대입
transform.rotation = rotation;//회전값에 따라 자신의 rotation변화시킴.
Quaternion.identity : 회전 없음 이걸 유니티에서 print해본 결과, 값이 (0,0,0,1)이 나옴.
즉, 아무 회전 없음을 나타낼 때 사용.
Quaternion.Angle(Quaternion A, Quaternion B) : A와 B의 각도 return 값은 float
Quaternion.Slerp(Quaternion A, Quaternion B, float Time): 시간 T에 따른 From A To B로의 회전값.
사실 A에서 B든 B에서 A든 방향은 중요하지 않기때문에 순서 상관없음. 순서 바뀌어도 같은 회전을 한다.
Quaternion.FromToRotation(Vector3 A, Vector3 B): A에서 B로 회전할 수 있게 해주는 쿼터니언 생성