- 삼각함수는 각의 크기를 삼각비로 나타낸 함수를 의미합니다.
- 삼각비는 변과 각의 관계를 수치로 나타낸 것으로 sin, cos, tan이 이에 속합니다.
- 삼각함수의 기본 개념과 실습을 진행해보도록 하겠습니다.
위에서 언급한 삼각비를 구하는 방법 및 빗변의 길이를 구하는 피타고라스 정리는 필수로 암기하고 넘어가야 하는 개념입니다.
- 일반적으로 게임에서 각도는 회전을 위해 사용됩니다.
- 각도법 (Degree)
- 각의 크기를 0 ~ 360 까지의 수로 각도를 표현하는 방법
- 호도법 (Radian)
- 호의 길이로 각도를 표현하는 방법
각도와 호도는 서로 변환이 가능합니다.
ex) 30°를 라디안으로 변환 : 30° * (π/180) = π/6
ex) 2π를 각도로 변환 : 2π * (180/π) = 360°
- 단위(Unit)원은 반지름의 길이가 1인 원을 의미합니다.
- 단위원과 피타고라스 법칙을 이용해 x길이, y길이를 구할 수 있습니다.
위 그림에서 노란색 선이 원과 만나는 지점의 좌표는 다음과 같습니다.
만약 각도가 점점 증가한다고 가정한다면?
- 간단한 대포를 만들어 각도에 따라 포신을 회전시키기
- 포신의 끝에서 총알이 일직선으로 발사되도록 구현하기
- 대포 역할을 해줄 Buleprint class를 생성합니다.
- Q, E 입력을 받아 각도를 조정합니다.
(x, y, z 중 x, z축만을 사용해 2차원 처럼 구현)
대포 역할을 해줄 블루프린트 클래스를 생성합니다.
포신의 길이를 500으로 설정합니다.
(기본 Cube = 100이므로, Scale을 5배 증가)
레벨 블루프린트에서 Q와 E 입력이 들어오면 Degree를 수정하고 대포에 적용시켜줍니다.
- 총알 역할을 해줄 Buleprint class를 생성합니다.
- 총알이 생성되면 매 프레임 특정 각도로 속도만큼 위치를 이동합니다.
- SpaceBar를 통해 총알을 포신의 끝에 생성합니다. (발사)
대포에서 발사될 총알 블루프린트 클래스를 생성합니다.
총알은 매 프레임 자동으로 특정 각도를 향해 이동하도록 수정합니다.
(pos.x += speed x cos(degree) x deltaTime)
(pos.z += speed x sin(degree) x deltaTime)
총알을 포신의 끝 위치에서 스폰합니다.
생성 후 현재 총알에게 포신의 각도를 전달합니다.
총알의 스폰 위치는 각도만 계산했을 때 cos(Degree), sin(Degree)입니다.
여기에 포신의 길이를 적용시켜 주면 포신의 끝에서 총알이 스폰되게 설정할 수 있습니다.
(총알의 스폰 위치.x = 대포의 위치.x + (포신의 길이 x cos(Degree))
(총알의 스폰 위치.z = 대포의 위치.z + (포신의 길이 x sin(Degree))
결과 확인
포신의 끝에서 총알이 제대로 발사되는 것을 확인할 수 있습니다.