Posted in: Unity, 메서드 & 팁 정리

(유니티) 벡터 연산 기초

  유니티를 사용하면 Vector3(또는 Vector2) 함수를 많이 접하게 된다. 게임에 활용되는 벡터 개념은 그리 어렵지 않다. 중요한 3가지 개념이 있는데 간단하게 알아보도록 하자.


벡터는 방향과 크기(거리, 길이, 속도)를 가진다.

  몬스터는 (0, 0) 좌표에 있고 주인공은 (2, 2) 좌표에 있다고 가정해보자.

  방향에 대한 내용은 밑에서 알아보기로 하고 크기에 관한 내용을 알아보자.

  몬스터와 주인공 사이의 거리는 루트8 이다. 피타고라스 정의에 따라 쉽게 구할 수 있다. 그렇다면 몬스터와 주인공에 대한 벡터 크기는 루트8 이된다.

  이게 뭐 무슨 의미냐면,

  몬스터의 인식범위가 0.7 이라면 몬스터와 주인공의 거리는 루트8 이기 때문에 인식범위를 벗어나게 된다. 즉, 이 말은 루트8 이 몬스터의 인식 범위보다 큰 것이다. 그러므로 벡터는 크기를 가진다.


목표 좌표에 현재 좌표를 빼면 얼마나 움직여야 하는지 필요한 좌표가 나온다.

  주인공 좌표(2, 2) 와 몬스터 좌표(-2, 2)를 빼면 (4, 0) 이된다. 즉, 주인공이 몬스터에게 이동할려면 (4, 0) 만큼 이동해야 된다는 말이다.


벡터는 방향과 크기로 분리해서 정의할 수 있다.

  이제 방향 벡터에 대해 알아보자. 간단하게 말하자면 방향 벡터는 길이가 1인 벡터이다. 위 그림으로는 초록색 원이 방향 벡터들의 좌표이다.

  (5, 5) 와 (3, 3) 의 방향은 같다. 즉, 같은 방향에 있는 좌표들이 수 없이 많은 것이다. 어차피 방향은 크기가 중요한게 아니기 때문에 거리가 1인 방향 벡터를 따로 지정한 것이다.

  그 이유는 밑에서 추가로 설명하겠다.

  방향 벡터를 굳이 설명하는 이유는 벡터는 [방향 X 거리] 로 표현할 수 있다. 이렇게 표현할 때 길이가 1인 벡터가 있으면 거리를 깔끔하게 표현할 수 있기 때문이다.

  주인공이 원거리 마법 공격을 한다고 가정하자. 화면에 보이는 빨간색 좌표점들에 공격을 한다고 했을 때, 거리는 모두 동일하다(루트25). 즉, 마법 공격을 벡터로 표현했을 때 [방향벡터 X 루트25] 로 보기 좋게 표현할 수 있다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다