
Fire 탱크는 발사체를 발사해야 하지만, 아직 이와 관련된 함수가 없다. 우리는 프로젝트 세팅에서 액션 매핑으로 Fire가 마우스 좌클릭으로 있었던 것을 알고 있기에, 여기에 바인드할 함수를 구현해주어야 한다. 해당 함수 자체는 터렛과 탱크 모두에게 필요하다. 따라서 베이스폰에서 해당 함수를 구현하게 된다. 탱크에서는 입력을 통해 발사가 이루어지기에 바인드 작업이 필요하다. 축 매핑의 경우 BindAxis 함수를 통해 바인드 작업을 해줬지만, 액션 매핑의 경우 BindAction 함수를 통해 바인드 작업을 하게 된다. 동작 매핑은 축 매핑과 다소 다른데, 우선 동작 매핑은 일회성이기에 모든 프레임에서 실행되지 않는다. 또한 축 매핑의 스케일 값과 같은 인풋 매개 변수가 존재하지 않는다. 버튼이 눌렸는지..

Tower 클래스 현재 포탑이 회전하도록 만들어주었지만, 탱크에만 상속되어있고 타워의 경우 클래스 자체가 존재하지 않아서 회전하지 않는다. 따라서 타워 클래스를 생성해주고, 상속 및 기타 터렛이 필요로 하는 기능을 구현해주어야 한다. 우리는 터렛을 적으로 설정하였다. 따라서 터렛의 일정 범위 내에 탱크가 위치한다면, 탱크를 향해 터렛이 따라오며 탱크를 향해 발사체를 발사해야 한다. 이를 위해 알 수 있는 것은 우리가 탱크의 위치와 탱크의 위치와 터렛사이의 거리, 그리고 범위 값을 설정해주어야 하는 것이다. 우선 탱크 포인터를 얻는 것은 BeginPlay 함수에서, 나머지는 Tick 함수에서 진행하게 된다. 현재 해당 함수들이 존재하지 않으므로, 따로 구현을 해주어야 한다. 탱크에 대해 접근할 포인터도 미..

포탑(Turret) 회전하기 저번 강의를 통해 얻은 커서 방향으로 포탑을 회전시켜줄 차례이다. 이를 위해서는 먼저 포탑을 조준하려는 방향을 얻어야 한다. 이는 포탑에서의 벡터 값과 마우스 커서(히트 위치)의 벡터 값의 차이를 구해 알아낸 방향 벡터를 통해 알 수 있다. 이렇게 구한 방향 벡터를 통해 로테이터 값을 얻을 수 있다. 이때 주의해야할 점이 있는데, 마우스 커서가 플로어를 향할 경우 포탑이 바닥을 가리키게 된다. 우리가 원하는 것은 단순 회전이지 위아래까지 움직이는 것이 아니기에 회전 값을 Yaw(Z 값)만 건드려줄 필요가 있다. 이제 직접 구현해보자. 회전 자체는 터렛과 탱크 포탑 모두 필요하기에 베이스폰에서 구현하게 된다. 앞서 얘기했듯이 목표 지점과 현재 위치의 차이값이 필요하다. 이를 위..
문제링크 : https://www.acmicpc.net/problem/1755 1755번: 숫자놀이 79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = INT_MAX; int N, M; string s, arr[11] = { "zero" ,"one" ,"two" ,"three" ,"four" ,"five" ,"six" ,"seve..