C언어 세션 3일차
1-9. 변수
변수(Variable) <-> 상수(Constant) [중요 샘플 코드]
자료형 변수명 = 값;
Ex010901) 자료형 변수명 = 값; [중요 샘플 코드]
변할 수 있는 수


unsigned 키워드와 signed 키워드
부호 없는 , 부호 있는
서식 지정자: %u
오버플로우(Overflow)
자료형이 표현 가능한 수를 넘어서는 경우.
-128 ~ 127 까지 표현 가능한데 그 수치를 넘어갈 경우 반전돼서 나옴
ex)
- -129 >> 127
- 132 >> -128


컴퓨터는 문자를 이해할 수 없음
소스코드를 컴파일러를 통해 이진패턴으로 만들었다는 걸 기억해야 됨
인코딩(Encoding) Vs. 디코딩(Decoding)
형태 A → 형태 B 로 변환하는 것 (인코딩)
반대로 형태 B → 형태 A 로 변환하는 것 (디코딩)
1-10.ASCII
ASCII(American Standarded Code for Information Interchange) 아스키
문자 형태의 데이터와 숫자 형태의 데이터 사이의 인코딩 규약 중 하나.
아스키 코드 3개만 외우기
- 문자 0 : 48 / 문자 2: 50 → 문자 0 부터 순서대로 올라감 (외우기 쉬움)
- 문자 A: 65
- 문자 a: 97
A 라고 적으면 65로 저장됨
A 를 %d 로 입력 하면 65
65 를 %c 로 입력하면 A
1-11. 입력 기초
scanf() 함수 [중요 샘플 코드]
키보드로부터 데이터를 입력 받을 수 있게끔 해주는 함수

Ex011101) scanf() 함수

2-1. 연산자와 피연산자, 산술 연산자, 복합 대입 연산자, 값식문
연산자(Operator) , 피연산자(Operand)
피연산자와 함께 사용되어서 계산 결과를 만들어 내는 기호
ex) 5 + 2 에서
5, 2 → 피연산자
+ → 연산자
연산자 우선순위(Operator Priority)와 결합법칙
덧셈과 곱셈이 뒤섞여 있는 식에서 묵시적으로 곱셈을 먼저 계산
산술 연산자의 종류
덧셈, 뺄셈, 곱셈, 나눗셈, 나머지(%)
ex)
나눗셈: 몫을 구하는 연산자
나머지 연산자: 나눗셈의 나머지 값을 구하는 연산자
정수 피연산자와 실수 피연산자
int 자료형끼리의 나눗셈은 그 결과도 int.
ex)
컴퓨터는
5 / 2 = 0
5 / 2 = 2
같이 표현해버림
5.0f / 2.0f = 2.5f
실수로 써줘야 알아들음
Feed-back [중요 샘플 코드]
int s = 0;
s = s + 10; // s += 10 과 같음
현재 변수 = 이전 변수값 + 10;
다른 사칙연산도 피드백 코드 가능
// s = s + 10
s -= 10
s %= 10
ex)
int CurrentPlayerExp = 20;
// 빨간달팽이(EXP 10) 사살!
CurrentPlayerExp = CurrentPlayerExp + MonsterExp;
현재 경험치 = EXP20
빨간달팽이 사살로 경험치가 추가로 10 + 가 되어야함
현재 경험치(20) = 현재 경험치(20) + 빨간달팽이를 잡고 얻는 경험치 (10)
2-2. 증감 연산자, 논리 연산자, 비교 연산자
증감 연산자
증가/감소의 줄임말
단항의 피연산자를 가지는게 특징
ex) ++Num;
증감 연산자에는 전치 증감 연산자 , 후치 증감 연산자 가 있음
각각 피연산자의 앞 혹은 뒤에 붙음
전치/후치 의미
전치는 지금 당장,
후치는 다음 줄에 연산
ex)
++Num이라면 지금 당장 Num이 1 증가.
Num++이라면 다음 줄에 Num이 1 증가.
Ex020201) 전치/후치 증감 연산자

논리 연산자
C언어에서는 0은 거짓(false)
0 이외의 모든 값은 참(true)
-8 은? True. 0 이외의 모든 값은 참임
피연산자를 참 혹은 거짓으로 평가한 후에 논리 연산을 수행
계산된 결과값도 참 혹은 거짓
즉, 불대수(boolean)연산자
거짓에 준하는 값(falsy)
NULL , ‘\0’ , ...
논리 연산자의 종류
- 논리 곱 연산자 (&&)
- 논리 합 연산자 (||) → \ 랑 Shift 같이 누르면 나옴
- 논리 반전 연산자 (!)
논리 연산자 꿀팁
“논리”라는 단어에 집중하기보다 곱 또는 합 단어에 집중하면 됨
논리 곱 연산자는 곱셈으로, 논리 합 연산자는 덧셈으로 치환해서 생각
관계 연산자 / 비교 연산자
피연산자 간의 관계(대소, 대등, …)를 판단하는 연산자. ex) 3 < 2, 4 != -1, 3 == 3, …
주의할 점 - 대등 연산자가 수학과 다르게 두 개 적어야함
등호도 두 개를 작성해야 대등 연산자 (==)
반대로 다르다는 (!=)
2-3. 형변환 연산자, 삼항 연산자, sizeof
삼항 연산자 해석이 어렵다면
ex) 4 < 5 ? 0 : 1;
첫번째 항이 참임 ?
참이면 두번째항 귀결
거짓이면 세번째항 귀결
위와 같은 식은 “4 보다 5가 더 크냐?” 라고 물어보는 것
참이라면 :(colon) 을 기준으로 앞에 값 (또는 식) 이 계산 결과가 나옴
거짓이라면 colon 뒤에 값 (또는 식) 이 계산 결과로 나옴
Blueprint FPS 슈팅 게임 개발 3일차
Line Trace & 데미지 시스템
핵심 3가지
- 시작점: 어디서 쏠 건지 (예: 카메라 위치)
- 끝점: 어디까지 쏠 건지 (예: 카메라 앞 10000cm → 100m),
- 결과: 뭔가에 맞았는지, 맞았다면 뭐에 맞았는지
Inputs → IA_Fire 생성 → 설정 후 → 블루프린트 IA_Fire Started 에 연결

Line Trace By Channel
Player Camera Manager: 내 화면(카메라)을 관리하는 매니저
Return Value
X 검색해서 곱하기 핀을 뽑기 → 아래 입력핀에 우클릭하고 To Float 로 변경
현재 내 화면이 상/하/좌/우 어디로 움직였든 그 위치에서 앞 방향을 알려주는데,
앞 방향인데 얼마나 앞 방향까지 라인을 그어줄지 정하기 위해서 X(곱하기)를 하는 것

곱하기 노드를 변수 Float 으로 변경 후 Range 4000 으로 변경 (나중에 변경할 때 찾기 쉬움)

True → print string “맞음” ,
False → print string “안 맞음”
설정 후 테스트

Hit Actor: 맞은 물체를 뜻함
print string으로 출력

이펙트, 사운드, 연발 사격
Muzzle Flash: 총의 총구에서 나오는 불꽃 이펙트
Impact Effect: 총알이 벽, 바닥에 부딪힐 때 나오는 먼지/파편 이펙트
Fab 에서 다운





Rotation에서 Z축을 알맞게 회전 시키고 테스트

이미터 하나 하나 누르면서 Loop Behavior를 Once로 변경 (총 7개)
이펙트가 중첩되지 않고 한 번씩만 잘 호출하기 위함


Location Type에 Snap to Target, Including Scale을 선택
- Keep Relative Offset → 붙인 컴포넌트 기준으로 위치 차이(오프셋)를 유지한 채 따라감
- Keep World Position → 스폰된 월드 위치 그대로 고정, 따라가지 않음
- Snap to Target, Keep World Scale → 타겟에 딱 붙되, 크기는 월드 기준 유지 (부모 스케일 무시)
- Snap to Target, Including Scale → 타겟에 딱 붙고, 부모의 크기까지 따라감 (지금 선택한 것)

- Viewport → MuzzlePoint를 선택하고 Scale을 0.5 로 변경
- 블루프린트 Spawn System Attached → VFX가 메모리에 쌓이지 않도록 Auto Destroy 체크
Spawn Emitter at Location 생성
Emitter Template → P_Concrete
Line Trace 의 Draw Debug 가 방해가 되니 끄기

총의 반동 주기

IA_Fire 이벤트 뒤에 노드가 너무 많기 때문에 모든 노드를 Fire라는 함수로 만들기
모두 선택 후 우클릭 → Collapse to Function


총 소리 나게 하기

볼륨 낮추기 → 0.3 = 30%

연발 사격 설정

크로스헤어 & 탄약 표시 UI



팔레트에서 canvas 검색 후 드래그앤 드랍해서 배치

progress bar도 검색 후 배치 → 체력바
HP라고 이름 변경
Is Variable선택 → 다른 캐릭터나 외부에서 HP값을 변경 할 수 있음
Progress 밑에 Percent는 1로 변경 / 1 == 100%

Text 검색 후 2개 canvas 안으로 배치
Text 2개 모두 선택 후 Anchors를 선택 하고 ctrl + shift 누르고 왼쪽 아래 위치를 클릭
- ctrl + shift 를 눌러야 원하는 위치에 정확하게 배치가능
- 텍스트 크기 64로 조정 및 이름 변경
- Size to Content → 박스가 글자 크기에 맞게 자동으로 사이즈 변경

위젯(UI, HUD) 연결한다고 생각하면 됨
연결 후 테스트

Anchors에서 ctrl + shift 누르고 중앙을 선택
Detail → Appearance → Image 선택하고 Anchor 이미지 선택
없다면...
컨텐츠 브라우저 오른쪽 Settings 버튼 → Show Engine Content 체크

Fire 최종 노드


Max Ammo 값을 현재 Current Ammo 로 세팅
나중에 Max Ammo 값만 변경하면 게임 시작 시 최초 Current Ammo값도 같이 변경하는 로직



현재 총알이 0발보다 큰지 검사합니다. true 일때(1발 이상 있다)만 뒤에 로직을 실행

PlayerHUD(위젯)에서 AmmoAmount변수 가지고 오고 마지막으로 Set Text해서 총알 수를 변경

'본 캠프 TIL' 카테고리의 다른 글
| 26.04.27 TIL / C언어 6-1 ~ 포인터, 구조체 간단설명 / UE5 미니 발표회 (0) | 2026.04.27 |
|---|---|
| 26.04.24 TIL / C언어 4-2 ~ 5-2 / UE5 Day5 (0) | 2026.04.24 |
| 26.04.23 TIL / C언어 3-1 ~ 4-1 / UE5 Day4 (0) | 2026.04.23 |
| 26.04.21 TIL / C언어 1-5 ~ 1-8 / UE5 Day2 (0) | 2026.04.21 |
| 26.04.20 TIL / C언어 1-1 ~ 1-4 / UE5 Day 1 (0) | 2026.04.20 |