반응형
[게임이론] 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 |