벡터의 연산 2
Transform.position (1,1) = (1,1) 지점으로 이동
Transform.Translate (1,1) = 현재위치에서 (1,1) 만큼 이동
벡터의 스칼라곱 : 벡터의 길이가 늘어난다
벡터의 내적
Vector3 a = new Vector3(0,1,0); 위쪽
Vector3 b = new Vector3(1,0,0); 아래쪽
Vector3.Dot(a,b); 수직인 벡터끼리 내적하면 결과는 0
두 벡터의 방향이 일치하는 정도의 크기를 구하는 것(두 벡터의 유사도).
정확히 말하면, 한 벡터에 대한 다른 벡터의 포함 정도.
-1~ 1 사이의 값이 나옴
1이 나오면 두 벡터가 같다는 의미
시야각에 들어왔는지 또는 전방, 후방에 있는지 체크할 때 좋다
내적의 값이 0보다 클때는 전방
0보다 작을 때는 후방
두 벡터가 이루는 각이 직각이라면 내적 값은 0.
왼쪽이던 오른쪽이던 같은 각도라면, 같은 값을 반환해낸다.
벡터의 외적
Vector3 a = new Vector3(0,1,0); 앞쪽
Vector3 b = new Vector3(1,0,0); 오른쪽
Vector3.Cross(a,b); (0,1,0) 위쪽
외적은 좌측인지 우측인지 판별할때 쓰임.
- 두 벡터가 평행일 때 외적의 값은 0
Z축을 기준으로 오른쪽으로 가면 Y가 상승
//두 벡터의 방향을 외적
Vector3 cross = Vector3.Cross(a.normalized,b.normalized);
if(cross.y>0) //y축이 양수이면
{
Debug.Log("오른쪽");
}
else if(cross.y<0) //y축이 음수이면
{
Debug.Log("왼쪽");
}
벡터의 크기 길이
Vector3.magnitude;
벡터의 두지점 사이의 거리
float distance = Vector3.Distance(a,b);
벡터의 두지점 사이의 방향
Vector3 dir = (a-b).normalized;
쿼터니언
Quaternion.Euler( Vector3);
(0,60,0) 회전하기
Quaternion rotation = Quaternion.Euler(new Vector3(0,60,0));
Vector3 eulerRotation = rotation.eulerAngles;
예제
Quaternion a= Quaternion.Euler(30,0,0); 회전한 상태에서
Quaternion b= Quaternion.Euler(0,60,0); 더 회전하기
Quaternion rotation = a*b; 곱하기