🕒TID
🔸알고리즘 공부 (코딩테스트 합격자 되기 C++ 편)
배열 이론 부분 완료
🔸게임 수학 공부
🔸게임 AI 특강
🔸프로젝트 작업
1️⃣ 코딩테스트 공부
🔹람다함수
[캡처](매개변수) -> 반환형 { 함수 본문 };
- 캡처(capture): 람다 함수 내부에서 외부 변수를 어떻게 사용할지 지정.
- [=] : 외부 변수 읽기 전용(복사)로 사용
- [&] : 외부 변수 참조(레퍼런스)로 가져와 수
- 매개변수(parameter): 일반 함수처럼 인자를 받을 수 있음.
- -> 반환형(return type): 반환형 지정 (생략 가능, 자동 추론).
- { 함수 본문 }: 함수의 동작을 정의.
2️⃣ 게임수학
F = 플레이어의 전방벡터
D = 플레이어가 바라보는 타겟까지의 벡터(타겟 위치 - 플레이어 위치)
🔹내적의 활용1) 플레이어와 대상 물체 간의 전후방 판별
F⋅D > 0 → 전방
F⋅D < 0 → 후방
F⋅D = 0 → 측면
좌/우는 외적을 통해 알 수 있음
내적은 크기와 방향을 비교하는 개념, 외적은 새로운 방향을 찾는 개념
🔹내적의 활용2) 시야각 내에 물체가 있는지 판별
(플레이어의 시야각 / 2)의 코사인 값 < F⋅D/∣A∣×∣B∣→ 타겟은 시야 내에 포함
(플레이어의 시야각 / 2)의 코사인 값 > F⋅D/∣A∣×∣B∣→ 타겟은 시야 외에 존재
🔹외적의 활용1) 직교 상황에서의 방향 판별(2D 게임 왼/오 판별)
F X D > 0 반시계(왼)
F X D < 0 시계(오)
🔹외적의 활용2) 표면의 법선 벡터 계산(3D 게임 충돌 및 조명 처리)
F와 D가 이루는 평면의 법선 벡터 = F X D
3️⃣ 언리얼 C++
🔹OpenLevel 사용
//FName을 활용하는 레벨 이동
#include "Kismet/GameplayStatics.h"
//.h
FName LevelToMove;
//.cpp
if (!LevelToMove.IsNone())
{
UGameplayStatics::OpenLevel(GetWorld(), LevelToMove);
}
//에셋 선택을 활용하는 레벨 이동
#include "Kismet/GameplayStatics.h"
//.h
TSoftObjectPtr<UWorld> LevelToMove;
//.cpp
if (!LevelToMove.IsNull())
{
UGameplayStatics::OpenLevelBySoftObjectPtr(GetWorld(), LevelToMove);
}
'TIL' 카테고리의 다른 글
[250221 TIL] 오류..오류..오류..오..ㄹ..ㅠ (0) | 2025.02.21 |
---|---|
[250219 TIL] UI 다이어그램 설계해보기 (0) | 2025.02.19 |
[250217 TIL] 심바이오 팀 기획 진행 (0) | 2025.02.17 |
[250214 TIL] Microsoft Visual Studio 디버그 창 에러 발생 (0) | 2025.02.15 |
[250213 TIL] 퍼즐 플랫폼 게임 Drone Dash 제작 (0) | 2025.02.13 |