2026/03/05 TIL
오늘의 목표
- 지난 주 수업 내용 공부하기( Unreal Blueprint 라이브세션 Day 5, TIL 특강, C언어 세션)
- 3/5 수업 내용 복습 (알고리즘 1일차, C++ 문법 챕터 1-1)
- 3/3 수업 내용 복습 (C언어 세션 동적할당 8-2, 구조체)
- C++ 문법 챕터 1-2 듣기
1. Unreal Blueprint 라이브 세션 Day 5
블렌더 스페이스와 움직이는 액터
회전하는 액터 BP_RotationPlatform 만들기

static mesh 적용.
event tick을 사용해야하는데, tick은 한 프레임을 말함.
1초당 몇 프레임인지 확인하기 위해 뷰포트에 stat FPS를 써서 확인.

60FPS이다.
1초에 60번 호출이 되는 event tick. (1/60초에 한번씩 호출)
Delta Seconds: 프레임과 프레임 사이 (프레임 변경 시간)
변경하고자 하는 값과 Delta Seconds를 곱함으로서 실제 병용되는 값에 넣어주면 프레임이 달라도 같은 값을 변환시킬 수 있다.
(60프레임일 시: 프레임당 1/60 변화. 10프레임일 시: 프레임당 1/10 변화.)

Velocity(속도) 기본 값을 10으로 설정.
너무 느려서 이후 100으로 수정했다.
*tip: Velocity 변수를 public 변수로 설정해서 뷰포트 디테일 패널에서 수정할 수 있다.

<문제>
플랫폼이 가만히 있는 캐릭터와 닿았을 때 physics 오류가 난다. (최적화를 위한 것)
이를 방지하기 위해서는 캐릭터가 계속 움직여야 함.


응...? 오류가 그대로다.
**어떻게 해결하는지 알아볼 것**
Set Actor Location으로 움직이게 만들기

Set Actor Location으로 움직이는 액터 만들기

<오류>
위와 같은 방식으로도 움직이는 액터를 만들 수 있다는데 실행해보니 가만히 서 있기만 한다.
해결책을 찾아볼 필요가 있을듯.
(다른 강의에 관련 내용 있으니 확인 필요)
무브먼트 컴포넌트에 보간 방식으로 움직이는 액터 만들기

완료!
닿으면 점프하는 버튼 만들기



오버랩 액터 만들기

static mesh와 box collision 적용.

액터에 닿으면 지면 마찰력, 감속 걷기 제동이 0이 되는 로직 구현.

floor에 닿아서 쭉 미끄러지는 모습.

local의 Rotation을 변경하는 노드 Add Actor Local Rotation
2. C++ 문법 챕터 1-1 프로그래밍 기초(1)
Hello World 출력하기

#include <iostream>
#include <string> //string 헤더를 추가
using namespace std;
int main() {
// 정수형 변수 선언
int age = 25; // 초기값 25
int year; // 초기값 없음
// 실수형 변수 선언
float pi = 3.14f;
double largeDecimal = 12345.6789;
// 문자형 변수 선언
char grade = 'A';
// 문자열 변수 (C++ 표준 라이브러리 사용)
string name = "John";
// 불리언 변수
bool isStudent = true;
cout << "Age: " << age << endl;
cout << "Year: " << year << " (uninitialized, may contain garbage value)" << endl;
cout << "Pi: " << pi << endl;
cout << "Large Decimal: " << largeDecimal << endl;
cout << "Grade: " << grade << endl;
cout << "Name: " << name << endl;
cout << "Is Student: " << (isStudent ? "true" : "false") << endl;
// 상수 선언
const double gravity = 9.8; // 중력 가속도
cout << "Gravity: " << gravity << endl;
return 0;
}
예상 출력값 :
Age: 25
Year: 쓰레기값 (uninitialized, may contain garbage value)
Pi: 3.14f
Large Decimal: 12345.6789
Grade: A
Name: John
Is Student: true
Gravity: 9.8
실제 출력값:
<오류> 실행하려 하니 year을 초기화하지 않아 오류가 생겼다.
year에 제대로 된 값을 집어넣고 출력해보겠다.
<실행>
Age: 25
Year: 2026 (uninitialized, may contain garbage value)
Pi: 3.14
Large Decimal: 12345.7
Grade: A
Name: John
Is Student: true
Gravity: 9.8
<다른 점>
1. 3.14f -> 3.14
이건 입력할 때 float값으로 넣기 위해 f으로 표시한 것이기 때문에 실제 출력값에는 표시되지 않는 것을 간과한 것.
2. large Deicmal
소숫점 값을 어디까지 표현할지 지정해주지 않았기 때문에 반올림해서 소숫점 뒤 첫째자리까지 표시된 것으로 보인다.
#include <iostream>
using namespace std;
int main() {
// 변수 선언 및 초기화
int a = 10, b = 5;
float x = 15.5, y = 4.2;
// 산술 연산
cout << "산술 연산:" << endl;
cout << "a + b = " << a + b << endl; // 덧셈
cout << "a - b = " << a - b << endl; // 뺄셈
cout << "a * b = " << a * b << endl; // 곱셈
cout << "a / b = " << a / b << endl; // 나눗셈
cout << "a % b = " << a % b << endl; // 나머지
// 대입 연산
cout << "\n대입 연산:" << endl;
a += 3; // a = a + 3
cout << "a += 3 -> a = " << a << endl;
a -= 2; // a = a - 2
cout << "a -= 2 -> a = " << a << endl;
a *= 2; // a = a * 2
cout << "a *= 2 -> a = " << a << endl;
a /= 2; // a = a / 2
cout << "a /= 2 -> a = " << a << endl;
// 관계 연산
cout << "\n관계 연산:" << endl;
cout << "a == b: " << (a == b) << endl; // 같음
cout << "a != b: " << (a != b) << endl; // 다름
cout << "a > b: " << (a > b) << endl; // 큼
cout << "a < b: " << (a < b) << endl; // 작음
cout << "a >= b: " << (a >= b) << endl; // 크거나 같음
cout << "a <= b: " << (a <= b) << endl; // 작거나 같음
return 0;
}
<예상 출력값>
산술 연산:
a + b = 15
a - b = 5
a * b = 50
a / b = 2
a % b = 0
대입 연산:
a += 3 -> a = 13
a -= 2 -> a = 11
a *= 2 -> a = 22
a /= 2 -> a = 11
관계 연산:
a == b: false
a != b: true
a > b: true
a < b: false
a >= b: true
a <= b: false
<실제 출력값>
?곗닠 ?곗궛:
a + b = 15
a - b = 5
a * b = 50
a / b = 2
a % b = 0
????곗궛:
a += 3 -> a = 13
a -= 2 -> a = 11
a *= 2 -> a = 22
a /= 2 -> a = 11
愿怨??곗궛:
a == b: 0
a != b: 1
a > b: 1
a < b: 0
a >= b: 1
a <= b: 0
다른점
한글 인코딩이 제대로 되지 않았다
false/true가 0/1로 표현되었다. (당연함...)
#include <iostream>
#include <string>
using namespace std;
int main() {
// 변수 선언
string name;
int age;
float height;
// 문자열 입력
cout << "이름을 입력하세요: ";
getline(cin, name);
// 정수 입력
cout << "나이를 입력하세요: ";
cin >> age;
// 실수 입력
cout << "키를 입력하세요 (cm): ";
cin >> height;
// 출력으로 확인
cout << "\n입력한 정보:" << endl;
cout << "이름: " << name << endl;
cout << "나이: " << age << endl;
cout << "키: " << height << " cm" << endl;
return 0;
}
입력값: Anna, 31, 170
<예상 출력값>
이름을 입력하세요: Anna
나이를 입력하세요: 31
키를 입력하세요 (cm): 170
입력한 정보:
이름: Anna
나이: 31
키: 170 cm
<실제 출력값>
?대쫫???낅젰?섏꽭??
인코딩 문제를 먼저 처리해야겠다...
오늘의 배운점: 액터 움직이기, 오버랩 액터 만들기
오늘의 아쉬운점: C++ 진도를 많이 나가지 못했다. 초반 진도는 쉬운 편이니 빠르게 넘어가는 게 좋을 것 같다.