본문으로 건너뛰기
게임 수학 · 게임 AI 기초집LESSON 03

벡터 기초

난이도입문
예상 시간35분
선수지식2강의 좌표계

3강. 벡터 기초

1. 이번 강의에서 해결할 문제

FVector를 모두 위치라고 생각해 방향 벡터에도 월드 좌표를 더하고, 속도와 한 프레임 이동량을 혼동합니다. 같은 자료형이 나타내는 물리적 의미를 문맥으로 구분합니다.

2. 학습 목표

3. 핵심 개념

FVector(X, Y, Z)는 세 숫자의 묶음이지만 의미와 단위는 변수 이름과 연산이 정합니다.

이름의미·단위
PositionPlayerLocation월드 원점에서 위치, cm
DisplacementTarget - Enemy적에서 목표까지 변화량, cm
DirectionDisplacement 정규화방향만, 단위 없음
VelocityDirection × Speed초당 이동량, cm/s

위치 두 개를 더하는 것은 대부분 의미가 없지만, 위치에서 위치를 빼면 변위가 됩니다. 방향과 속도를 구분하면 프레임 시간 적용 위치도 명확해집니다.

4. 단계별 실습

C++ · 파일 경로: Source/TopDownSurvival/AI/VectorVisualizer.h

VectorVisualizer.h
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "VectorVisualizer.generated.h"

UCLASS()
class TOPDOWNSURVIVAL_API AVectorVisualizer : public AActor
{
GENERATED_BODY()

public:
AVectorVisualizer();

protected:
virtual void BeginPlay() override;

UPROPERTY(EditInstanceOnly, Category = "Math")
TObjectPtr<AActor> TargetActor;
};

C++ · 파일 경로: Source/TopDownSurvival/AI/VectorVisualizer.cpp

VectorVisualizer.cpp
#include "AI/VectorVisualizer.h"

#include "DrawDebugHelpers.h"

AVectorVisualizer::AVectorVisualizer()
{
PrimaryActorTick.bCanEverTick = false;
}

void AVectorVisualizer::BeginPlay()
{
Super::BeginPlay();
if (!IsValid(TargetActor)) return;

const FVector Start = GetActorLocation();
const FVector End = TargetActor->GetActorLocation();
const FVector ToTarget = End - Start;

UE_LOG(LogTemp, Display,
TEXT("ToTarget=%s Length=%.1fcm"), *ToTarget.ToString(), ToTarget.Size());
DrawDebugDirectionalArrow(
GetWorld(), Start, End, 80.0f, FColor::Cyan, true, 10.0f, 0, 4.0f);
}

Unreal Editor 작업

레벨에 VectorVisualizer와 플레이어를 배치하고 TargetActor를 연결합니다. 두 Actor 위치를 바꾸며 화살표 방향과 로그 길이를 비교합니다.

5. 코드와 수학·AI가 동작하는 이유

목표 위치 T에서 적 위치 E를 빼면 D = T - E가 적에서 목표로 향하는 변위가 됩니다. D의 크기 |D|는 거리이고, 다음 강의에서 D를 정규화하면 길이 1인 방향을 얻습니다. Debug Arrow는 추상적인 세 숫자를 공간에서 확인하게 합니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

벡터 기초 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“벡터 기초”에서 다음 단계로 넘어가기 전에 확인할 핵심은 무엇인가요?
  2. 문제 2“벡터 기초” 실습 중 ‘Target + Enemy로 방향 계산’ 상황을 발견했습니다. 본문과 일치하는 설명은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

3강. 벡터 기초 미완료 상태