본문 바로가기
프로그래밍 이야기/GameDev

[게임이론] Vector의 활용

by Mulder5 2020. 12. 21.
반응형

 

 

[게임이론] Vector

Vector는 크기와 방향으로 구성되어 있다. 티스토리의 수식 입력 방법을 몰라서 그냥 이미지로... ㅜㅜ

definelife.tistory.com

[게임이론] Vevtor에 이어서 직접 Unity에서 벡터를 이용해서 Player와 마우스 간 라인을 출력해보겠다. 이번에도 Unity의 구성보다는 수학 이론의 활용에 대해 중점적으로 다뤄보겠다.

float ditectionRange = 4f;

// 화면 상에서의 마우스 위치
Vector2 mousePos = Input.mousePosition;
Debug.Log(mousePos);
// 현재 마우스의 위치를 게임 내의 Position 값으로 변환
mousePos = mainCamera.ScreenToWorldPoint(mousePos);
Debug.Log(mousePos);

Vector3 playerPos = transform.position;

// vector A to B - Vector B - Vector A = 마우스 벡터 - 플레이어 위치 벡터
Vector2 distanceVec = mousePos - (Vector2)playerPos;

// 가이드 라인 활성화 처리
// Magnitude -> 거리
// sqrMagnitude -> 거리의 제곱
guideLine.SetActive(distanceVec.magnitude < ditectionRange ? true : false);

// 가이드라인의 방향을 DistancVec의 방향 벡터로 설정한다.
// 방향 벡터를 설정하는 것은 벡터.normalized
// distanceVec.normalized == distanceVec / distanceVec.magnitude
guideLine.transform.right = distanceVec.normalized;

// 방향에 관련된 것은 전부 방향 벡터로 설정(Normal)

 

1. 직선 라인(guideLine)의 활성/비활성

플레이어와 마우스간의 직선 객체는 guideLine이다. 이를 활성화/비활성화 하기 위해서 벡터AB 즉, distanceVec를 구한다. vAB = vB - vA이므로 distanceVec = v마우스 - v플레이어 이다. 이 벡터 값이 directionRange 보다 작으면 활성화. 크면 비활성화 된다.

직선 라인의 활성/비활성에는 벡터의 길이 성분이 필요하므료 distanceVec.magnitude를 사용한다. 

2. 직선 라인을 마우스 위치에 따라 위치 설정

guiddeLine의 각도에 대해서는 distanceVec의 방향 성분이 필요하므로 normalized를 사용한다. 

 

반응형

'프로그래밍 이야기 > GameDev' 카테고리의 다른 글

[게임이론]벡터의 외적  (0) 2020.12.28
[게임이론] 백터의 내적  (0) 2020.12.24
[게임이론] 삼각함수의 활용  (0) 2020.12.15
[게임이론] Vector  (0) 2020.12.15
[게임이론] 삼각함수  (0) 2020.12.10