[게임 수학] 역삼각함수

LeeTaes·2023년 12월 23일
0

게임수학

목록 보기
5/5
post-custom-banner

1. 역삼각함수

  • 역삼각함수 : 삼각함수의 역함수를 의미합니다.
  • 역삼각함수는 삼각함수의 결과값을 이용하여 각을 구할 때 사용됩니다.

[1 - 1] 기본적으로 알아야 하는 개념

  • 기존에 공부한 삼각함수를 통해 값을 구할 수 있었습니다.
  • 역삼각함수를 사용하면 위에서 구한 값을 통해 각도를 구할 수 있습니다.

  • 하지만 삼각함수의 그래프를 생각해본다면 값이 중복되는 부분들이 존재합니다.
    cos(0) = 1, cos(2π), cos(4π) = 1 ...
    arccos(1) = 0, 2π, 4π...
  • 즉, 범위를 지정해 입력값과 출력값의 비율을 맞춰줘야 합니다.

  • arccos의 결과로 나올 수 있는 각도는 0 ~ 180
  • arcsin의 결과로 나올 수 있는 각도는 -90 ~ 90
  • arctan의 결과로 나올 수 있는 각도는 -90 ~ 90

2. 역삼각함수 실습 - UE_Blueprint

  • 간단한 Enemy를 추가합니다.
  • Enemy가 바라보는 방향과 Enemy와 Player를 이어주는 방향의 각도를 구해보는 실습을 진행해보도록 하겠습니다.
    (응용 시 몬스터의 후방 공격 판정 등.. 에 사용 가능)

[2 - 1] 몬스터 생성

  • 몬스터 역할을 해줄 Blueprint class를 생성합니다.
  • 바라보는 방향을 판별하기 위해 표시해주도록 합니다.


[2 - 2] 몬스터 기준 플레이어의 각도

  • 몬스터의 전방 벡터와 몬스터에서 플레이어를 향하는 벡터를 구해줍니다.
  • 두 벡터의 각도를 구해 확인합니다.
  1. 몬스터의 전방 벡터(바라보는 방향)과 플레이어를 레벨에서 찾아줍니다.
    몬스터의 위치는 변경되지 않을 것이므로, 시작과 동시에 저장합니다.

  2. 몬스터에서 플레이어로 향하는 방향 벡터를 구한 후 1에서 구한 전방 벡터와 내적을 수행해 스칼라 값을 얻어줍니다.

  3. 해당 값을 역삼각함수에 넣어 각도를 구해 출력합니다.

  4. 결과 확인
    몬스터의 기준에서 플레이어가 위치한 방향의 각도를 구할 수 있습니다.

[2 - 3] 360도 기준으로 변경하기

  • arccos은 0 ~ 180 사이의 각도만을 결과로 출력합니다.
  • 이전에 배운 외적을 통해 관계를 파악해 360도 기준으로 변경해줍니다.
  1. 기존과 동일하게 내적한 결과를 Degree라는 변수에 저장합니다.

  2. 몬스터의 전방 벡터와 몬스터에서 플레이어로 향하는 벡터를 외적한 결과값에 따라 분기합니다.

    • 0보다 작다면 Degree를 그대로 출력
    • 0보다 크다면 360 - Degree를 출력
  3. 결과 확인
    몬스터의 기준에서 플레이어가 위치한 방향의 각도를 성공적으로 확인할 수 있습니다.

profile
클라이언트 프로그래머 지망생
post-custom-banner

0개의 댓글