2026. 1. 22. 22:04ㆍ언리얼 7기 본캠프
밤에 잠을 한숨도 못자고 꼬박 지새워서 컨디션이 안좋았지만 어떻게든 버텨냄
코드카타는 오늘부로 프로그래머스 레벨 2로 넘어갔음. 문제 난이도가 갑자기 확 쉬워져서 보니까 레벨 2중에서 쉬운문제부터 시작하는걸로 느껴짐
이제는 다양한 라이브러리를 활용할 방법을 생각하고 조금 더 계산적인 코딩이 필요해질것으로 느껴짐
//최댓값과 최소값. sstring으로 코딩하긴 했는데, 굳이 안써도 가능했을것 같기도...
#include <string>
#include <vector>
#include <sstream>
using namespace std;
string solution(string s) {
string answer = "";
int min, max, temp;
stringstream ss(s);
ss >> min;
ss >> temp;
if (min < temp) max = temp;
else {
max = min;
min = temp;
}
while(ss >> temp){
if(min > temp) min = temp;
if(max < temp) max = temp;
}
answer = to_string(min) + " " + to_string(max);
return answer;
}
//JadenCase만들기. 괜히 sstring의 늪에 빠졌다가 공백 문제를 제대로 확인못해서
//싹 다 날리고 처음부터 다시 작성함. 오히려 코드가 간결해져서 좋았음
#include <string>
#include <vector>
#include <cctype>
using namespace std;
string solution(string s) {
string answer = "";
for(int i = 0; i < s.length(); i++){
if (s[i] == ' '){
answer += " ";
continue;
}
if (i == 0 || s[i-1] == ' '){
answer += toupper(s[i]);
}
else answer += tolower(s[i]);
}
return answer;
}
챌린지반 강의로 오토마타와 스테이트머신에 대한 강의를 들었는데... 아... 이걸 밤을 새고 들으니까 모르는 개념에다 쉽게 눈에 들어오지 않는 코드에 더해 복잡해서 머리가 붕 뜨고 제대로 이해하지를 못함... 나중에 노션이랑 다시보기 보면서 계속 재정리를 해야할 것 같음...
오늘은 7번과제 마무리하고 제출했음. 마지막에 애니메이션 추가하는 부분에서 약간 애를 먹었는데... 그래도 어찌 잘 된것 같음
체크리스트를 통해 과제를 잘 구현했는지 셀프 검사를 해보겠음
- C++로 Pawn 클래스를 올바르게 생성했는가? 예
PawnClass 및 Drone 모두 Pawn클래스를 기반으로 제작함
- 생성된 Pawn이 물리가 아닌 조작으로만 움직이는가? 예
AddControllerYawInput 이나 AddControllerPitchInput 등을 사용하지 않고 AddActorLocalLocation, Rotation을 이용해서 움직임을 구현함
- WASD와 마우스 입력에 따라 Pawn이 정상적으로 움직이고 회전하는가? 예
WASD를 기준으로 폰이 방향에 맞게 움직이고, 마우스 입력에 따라 의도에 맞게 정상적으로 회전함
- Pawn과 PlayerController의 관계를 정확히 이해했는가? 예
PlayerController는 플레이어의 입력을 받아 입력을 의도/명령으로 변환하는 컨트롤러이며, Pawn은 그 입력을 받아서 실제로 움직이는 액션을 구현하는 액터이다
- Enhanced Input의 액션, 매핑 컨텍스트, 바인딩 관계를 이해했는가? 예
IA는 들어올 인풋 값의 타입과 의도를 지정해주고, IMC는 실제 입력과 IA를 매핑해서 연결해 입력을 값으로 바꿔주는 역할을 하고, 바인딩은 IA에 실제 값이 들어왔을때 어떤 함수를 실행할 지 연결해주는 작업임
- 물리 계산이 아닌 직접 연산에 의한 이동, 회전을 이해했는가? 예
직접연산에 의한 이동, 회전은 AddActorLocalLocation, Rotation을 이용한 이동 및 회전을 말하며 '직접적으로 수치를 연산해' 처리하는 이동 및 회전을 말함
- 6자유도 비행체로 구현하여 모든 축의 이동과 회전이 가능한가? 예
WASD+스페이스바+쉬프트 로 6축 방향의 이동, 마우스+QE로 6축 방향의 회전이 모두 가능함
- 중력과 낙하 로직이 자연스럽게 구현되었는가? 세모
최대한 자연스럽게 구현한다고 했는데, 다 만들고나서 생각해보니 중력 가속의 리미트를 걸지 않아서 길게 떨어지면 무한정 빨라지는 현상이 일어날 수 있음. 평지에서 점프하는 테스트만 하느라 생각을 못한 부분...
- 지면 충돌 판정과 착지 처리가 올바르게 작동하는가? 예
LineTrace를 통해 지면 충돌을 확인하고, 이를 통해 착지를 처리하는 bool값을 수정해 착지 처리를 올바르게 작동시킴
리포지토리와 시연영상을 첨부함
https://github.com/Nichipe-JCM/CPP_Assignment_7_JCM/
GitHub - Nichipe-JCM/CPP_Assignment_7_JCM: 내배캠 언리얼 C++ 7번과제
내배캠 언리얼 C++ 7번과제. Contribute to Nichipe-JCM/CPP_Assignment_7_JCM development by creating an account on GitHub.
github.com
++ 오늘의 추가 메모 : 대사의 재시작 방식 분석
쉬는시간에 오늘 출시한 오픈월드 게임인 명일방주 엔드필드를 잠깐 찍먹해봤는데, 튜토리얼을 진행하던 도중 약간 흥미로운 기능을 발견함
필드의 자유이동 도중 스토리 NPC 대사가 출력중 -> 출력 도중에 필드의 NPC와 상호작용하여 대사관련 이벤트 처리 -> 이벤트가 끝나고 필드로 돌아오면 출력중이던 대사가 다 끝나있거나 끊어지는게 아닌, "방금 하던 얘기를 계속하자면..."이라는 반응과 함께 상호작용 이전에 출력중이었던 대사를 처음부터 다시 출력함
이는 오픈월드 게임을 여러개 해봤지만 경험해본적 없는 케이스였고(단순히 내가 처음보는것일지도...), 이 방식을 알아두면 추후에 써먹을 방향이 있을지도 모르겠다는 생각이 들었음. 기존의 대사가 다 끝나버리거나 상호작용중인데도 줄줄이 말하는 방식보다 훨씬 자연스럽게 느껴질 수 있음. 스토리 NPC에게 약간 죄책감(?)이 들 수는 있겠다만...

'언리얼 7기 본캠프' 카테고리의 다른 글
| 260126 TIL - 언리얼 C++ 13일차 (0) | 2026.01.26 |
|---|---|
| 260123 TIL Unreal C++ 12일차, 8번과제 (1) | 2026.01.23 |
| 260121 TIL - Unreal C++ 10일차 (0) | 2026.01.21 |
| 260120 TIL - Unreal C++ 9일차 (1) | 2026.01.20 |
| 260119 TIL - Unreal C++ 8일차 (0) | 2026.01.19 |