본 글은 영상 을 공부한후 이해하기 어려운 부분과 기록을 작성한 글입니다.
https://www.udemy.com/course/unrealcourse-korean/
AActor::
AActor::GetOwner
이 액터의 소유자를 가져옵니다.
Get the owner of this Actor, used primarily for network replication.
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/GameFramework/Actor.h
Include : #include "GameFramework/Actor.h"
Syntax : AActor * GetOwner() const
AActor::GetActorNameOrLabel
해당 액터의 이름이나 레이블을 반환하는 기능을 가집니다.
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/GameFramework/Actor.h
Include : #include "GameFramework/Actor.h"
Syntax : const FString GetActorNameOrLabel() const
AActor::GetActorLocation
이 액터의 RootComponent 위치를 반환합니다
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/GameFramework/Actor.h
Include : #include "GameFramework/Actor.h"
Syntax : FVector GetActorLocation() const
Module : Core
FVector::ToCompactString
압축적으로 읽을 수 있는 로깅을 위해 해당 벡터의 값을 FString 형태로 변환하여 반환합니다.
Module : Core
Header : /Engine/Source/Runtime/Core/Public/Math/Vector.h
Include : #include "Math/Vector.h"
Syntax : FString ToCompactString() const
FMath::VInterpConstantTo
한 벡터를 다른 벡터로 일정한 속도로 점진적으로 이동시키는 데 사용됩니다.
이 함수는 특히 애니메이션, 움직임 처리, 오브젝트 간의 부드러운 이동 등에 유용하게 사용됩니다.
Module : Core
Header : /Engine/Source/Runtime/Core/Public/Math/UnrealMathUtility.h
Include : #include "Math/UnrealMathUtility.h"
Source : /Engine/Source/Runtime/Core/Private/Math/UnrealMath.cpp
Syntax :
static FVector VInterpConstantTo
(
const FVector & Current,
const FVector & Target,
float DeltaTime,
float InterpSpeed
)
매개 변수
- Current : 현재 벡터의 위치입니다.
- Target : 목표 벡터의 위치입니다.
- DeltaTime : 이전 프레임과 현재 프레임 사이의 시간 간격입니다. 일반적으로 게임 루프나 업데이트 함수에서 계산된 DeltaTime을 사용합니다.
- InterpSpeed : 벡터가 이동할 속도입니다. 이 값이 높을수록 벡터는 더 빠르게 목표 위치로 이동합니다.
struct FHitResult
충돌 검사(예: 레이캐스팅) 결과의 정보를 담고 있는 구조체입니다. 이 구조체는 충돌이 발생했을 때 어떤 오브젝트와 충돌했는지, 충돌한 지점의 위치, 충돌한 표면의 방향(normal), 그리고 기타 관련 정보를 제공합니다.
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/Engine/EngineTypes.h
Include : #include "Engine/EngineTypes.h"
Syntax : struct FHitResult
멤버 변수
- Actor : 충돌이 발생한 Actor에 대한 참조입니다. 만약 충돌이 발생하지 않았다면 nullptr일 수 있습니다.
- Component : 충돌이 발생한 Actor의 구체적인 Component에 대한 참조입니다. 예를 들어, Actor의 StaticMeshComponent 또는 BoxComponent 등이 이에 해당할 수 있습니다.
- ImpactPoint : 실제 충돌이 발생한 지점의 월드 공간 좌표입니다.
- Normal : 충돌 지점에서의 충돌 표면의 법선(normal) 벡터입니다. 이 벡터는 충돌 표면에 수직이며, 충돌 처리나 반사 계산에 사용될 수 있습니다.
- Distance : 레이캐스트의 시작점으로부터 충돌 지점까지의 거리입니다.
- Location : 레이캐스트 라인 상에서 충돌이 감지된 지점입니다. ImpactPoint와 유사하지만, 충돌 처리에 따라 약간 다를 수 있습니다.
- bBlockingHit : 충돌이 발생했는지 여부를 나타내는 불리언 값입니다. true는 충돌이 발생했음을 의미합니다.
UWorld::~Channel
UWorld::LineTraceSingleByChannel
메서드는 세계(world) 내에서 단일 라인 트레이스(line trace)를 수행하여, 지정된 트레이스 채널(trace channel)을 사용하여 첫 번째 충돌을 감지하는 기능을 제공합니다.
이 메서드는 물리적 충돌 검사에 자주 사용되며, 특정 경로를 따라 첫 번째로 만나는 오브젝트를 찾습니다.
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/Engine/World.h
Include : #include "Engine/World.h"
Source : /Engine/Source/Runtime/Engine/Private/Collision/WorldCollision.cpp
Syntax
bool LineTraceSingleByChannel
(
struct FHitResult & OutHit,
const FVector & Start,
const FVector & End,
ECollisionChannel TraceChannel,
const FCollisionQueryParams & Params,
const FCollisionResponseParams & ResponseParam
) const
OutHit : 트레이스가 성공적으로 오브젝트와 충돌했을 때의 결과를 저장하는 FHitResult 구조체입니다.
Start : 트레이스의 시작점을 나타내는 FVector입니다.
End : 트레이스의 종료점을 나타내는 FVector입니다.
TraceChannel : 사용할 충돌 채널을 지정하는 ECollisionChannel 열거형 값입니다.
Params : 충돌 쿼리에 대한 추가 매개변수를 제공하는 FCollisionQueryParams 구조체입니다. 이를 통해 특정 액터를 무시하거나 트레이스의 정밀도를 설정할 수 있습니다.
ResponseParam : 충돌 응답에 대한 매개변수를 제공하는 FCollisionResponseParams 구조체입니다.
UWorld::LineTraceMultiByChannel
주어진 시작점과 종료점 사이에 있는 모든 오브젝트를 검출하는 레이캐스트(raycast)를 수행합니다. 이 함수는 특정 충돌 채널(Collision Channel)을 기준으로 레이캐스트를 실행하고, 해당 경로에 있는 모든 오브젝트와의 충돌을 감지합니다.
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/Engine/World.h
Include : #include "Engine/World.h"
Source : /Engine/Source/Runtime/Engine/Private/Collision/WorldCollision.cpp
Syntax :
bool LineTraceMultiByChannel
(
TArray< struct FHitResult > & OutHits,
const FVector & Start,
const FVector & End,
ECollisionChannel TraceChannel,
const FCollisionQueryParams & Params,
const FCollisionResponseParams & ResponseParam
) const
매개변수
- OutHits : 충돌 결과를 저장하는 FHitResult 객체의 배열입니다. 여러 개의 충돌 결과가 이 배열에 저장됩니다.
- Start : 레이캐스트의 시작점을 나타내는 FVector입니다.
- End : 레이캐스트의 종료점을 나타내는 FVector입니다.
- TraceChannel : 충돌 검사에 사용할 충돌 채널을 지정합니다. 예를 들어, ECC_Visibility 또는 ECC_PhysicsBody 등이 사용될 수 있습니다.
- Params : 충돌 검사 시 사용할 추가적인 파라미터를 지정하는 FCollisionQueryParams 객체입니다. 특정 액터를 레이캐스트에서 제외하거나, 추가적인 옵션을 설정할 수 있습니다.
- ResponseParam : 충돌 응답 매개변수를 지정하는 FCollisionResponseParams 객체입니다.
UWorld::SweepSingleByChannel
지정된 형태(콜리전 쉐이프)를 사용하여 세계(World) 내에서 단일 스위핑(sweeping) 연산을 수행합니다. 이 메서드는 지정된 시작점에서 종료점까지 형태를 이동시키면서 첫 번째 충돌을 감지하는 데 사용됩니다
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/Engine/World.h
Include : #include "Engine/World.h"
Source : /Engine/Source/Runtime/Engine/Private/Collision/WorldCollision.cpp
Syntax :
bool SweepSingleByChannel
(
struct FHitResult & OutHit,
const FVector & Start,
const FVector & End,
const FQuat & Rot,
ECollisionChannel TraceChannel,
const FCollisionShape & CollisionShape,
const FCollisionQueryParams & Params,
const FCollisionResponseParams & ResponseParam
) const
매개변수
- OutHit: 충돌 결과를 저장하는 FHitResult 객체입니다.
- Start: 스위핑의 시작점을 나타내는 FVector입니다.
- End: 스위핑의 종료점을 나타내는 FVector입니다.
- Rot: 스위핑하는 동안의 형태의 회전을 나타내는 FQuat입니다.
- TraceChannel: 사용할 충돌 채널을 지정합니다.
- CollisionShape: 스위핑에 사용할 콜리전 쉐이프를 정의합니다.
- Params: 충돌 쿼리에 대한 추가적인 파라미터를 지정하는 FCollisionQueryParams 객체입니다.
- ResponseParam: 충돌 응답 매개변수를 지정하는 FCollisionResponseParams 객체입니다.
UWorld::SweepMultiByChannel
"스위핑(sweeping)" 연산을 수행하는 데 사용됩니다. 스위핑은 지정된 모양(보통 콜리전 쉐이프)을 시작점에서 종료점까지 이동시키면서, 그 경로 상에 있는 모든 오브젝트와의 충돌을 감지하는 과정입니다.
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/Engine/World.h
Include : #include "Engine/World.h"
Source : /Engine/Source/Runtime/Engine/Private/Collision/WorldCollision.cpp
Syntax :
bool SweepMultiByChannel
(
TArray< struct FHitResult > & OutHits,
const FVector & Start,
const FVector & End,
const FQuat & Rot,
ECollisionChannel TraceChannel,
const FCollisionShape & CollisionShape,
const FCollisionQueryParams & Params,
const FCollisionResponseParams & ResponseParam
) const
매개변수
- OutHits : 검출된 충돌 결과를 저장하는 FHitResult 객체의 배열입니다.
- Start : 스위핑의 시작점을 나타내는 FVector입니다.
- End : 스위핑의 종료점을 나타내는 FVector입니다.
- Rot : 스위핑하는 동안 사용할 모양의 회전을 나타내는 FQuat입니다.
- TraceChannel : 사용할 충돌 채널을 지정합니다.
- CollisionShape : 스위핑에 사용할 콜리전 쉐이프를 정의합니다.
- Params : 충돌 쿼리에 대한 추가 파라미터입니다.
- ResponseParam : 충돌 응답 매개변수입니다.
UWorld::
UWorld::GetWorld
현재 액터나 컴포넌트가 있는 게임 세계(World)의 인스턴스를 반환하는 함수입니다.
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/Engine/World.h
Include : #include "Engine/World.h"
Source : /Engine/Source/Runtime/Engine/Private/World.cpp
Syntax : virtual UWorld * GetWorld() const
UWorld::GetTimeSeconds(= GetWorld()->TimeSeconds)
게임 세계(World)에서 현재까지 경과한 시간을 초 단위로 반환합니다.
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/Engine/World.h
Include : #include "Engine/World.h"
Syntax : float GetTimeSeconds() const
DrawDebug
DrawDebugLine()
게임 세계에 시각적인 선을 그려 디버깅을 도와줍니다.
Module : Engine
Header : /Engine/Source/Runtime/Engine/Public/DrawDebugHelpers.h
Include : #include "DrawDebugHelpers.h"
Source : /Engine/Source/Runtime/Engine/Private/DrawDebugHelpers.cpp
Syntax :
void DrawDebugLine
(
const UWorld * InWorld,
FVector const & LineStart,
FVector const & LineEnd,
FColor const & Color,
bool bPersistentLines,
float LifeTime,
uint8 DepthPriority,
float Thickness
)
매개변수
- InWorld : 선을 그릴 월드의 참조입니다.
- LineStart : 선의 시작점을 나타내는 FVector입니다.
- LineEnd : 선의 끝점을 나타내는 FVector입니다.
- Color : 선의 색상을 나타내는 FColor입니다.
- bPersistentLines : 선이 일시적인지 영구적인지를 나타내는 부울 값입니다. 기본값은 false로, 선이 일시적임을 의미합니다.
- LifeTime : 선이 화면에 남아있는 시간(초)입니다. 기본값은 -1.f로, 이는 한 프레임 동안만 선이 표시됨을 의미합니다.
- DepthPriority : 렌더링 시 깊이 우선순위를 나타내는 값입니다.
- Thickness : 선의 두께입니다.
DrawDebugSphere()
게임 세계에 시각적인 구체(스피어)를 그려 디버깅을 도와줍니다.
Module : Engine
Header : /Engine/Source/Runtime/Engine/Public/DrawDebugHelpers.h
Include : #include "DrawDebugHelpers.h"
Source : /Engine/Source/Runtime/Engine/Private/DrawDebugHelpers.cpp
Syntax :
void DrawDebugSphere
(
const UWorld * InWorld,
FVector const & Center,
float Radius,
int32 Segments,
FColor const & Color,
bool bPersistentLines,
float LifeTime,
uint8 DepthPriority,
float Thickness
)
매개변수
- InWorld : 구체를 그릴 월드의 참조입니다.
- Center : 구체의 중심점을 나타내는 FVector입니다.
- Radius : 구체의 반지름입니다.
- Segments : 구체의 표면을 구성하는 세그먼트의 수입니다. 세그먼트 수가 많을수록 구체는 더 매끄럽게 보이지만, 더 많은 계산이 필요합니다.
- Color : 구체의 색상을 나타내는 FColor입니다.
- bPersistentLines : 구체가 일시적인지 영구적인지를 나타내는 부울 값입니다. 기본값은 false로, 구체가 일시적임을 의미합니다.
- LifeTime : 구체가 화면에 남아있는 시간(초)입니다. 기본값은 -1.f로, 이는 한 프레임 동안만 구체가 표시됨을 의미합니다.
- DepthPriority : 렌더링 시 깊이 우선순위를 나타내는 값입니다.
UPhysicsHandleComponent
UPhysicsHandleComponent
Unreal Engine에서 제공하는 컴포넌트로, 물리 기반의 오브젝트를 잡고(manipulate) 움직이는 기능을 제공합니다.
이 컴포넌트는 주로 드래그 앤 드롭 작업, 오브젝트의 물리적 상호작용, 또는 레버와 같은 메커니즘의 조작 등에 사용됩니다.
주요 기능:
- 잡기 및 놓기: UPhysicsHandleComponent는 물리 오브젝트를 잡고, 이동시키며, 놓을 수 있는 기능을 제공합니다.
- 대상 조작: 지정된 대상(예: UPrimitiveComponent)을 물리적으로 잡아서 조작할 수 있습니다.
- 위치 및 회전 제어: 잡은 오브젝트의 위치와 회전을 프로그래밍적으로 제어할 수 있습니다.
주요 메서드:
- GrabComponent: 오브젝트를 잡는 데 사용됩니다. 이 메서드는 잡을 컴포넌트, 잡는 위치 등의 파라미터를 받습니다.
- ReleaseComponent: 잡고 있는 오브젝트를 놓는 데 사용됩니다.
- SetTargetLocation: 잡고 있는 오브젝트의 목표 위치를 설정합니다.
- SetTargetRotation: 잡고 있는 오브젝트의 목표 회전을 설정합니다.
사용 예시
// cpp
UPhysicsHandleComponent* PhysicsHandle = CreateDefaultSubobject<UPhysicsHandleComponent>(TEXT("PhysicsHandle"));
...
// 오브젝트를 잡는 코드
PhysicsHandle->GrabComponentAtLocationWithRotation(
HitComponent,
NAME_None,
HitComponent->GetOwner()->GetActorLocation(),
FRotator::ZeroRotator
);
// 오브젝트를 이동시키는 코드
PhysicsHandle->SetTargetLocation(NewLocation);
// 오브젝트를 놓는 코드
PhysicsHandle->ReleaseComponent();
주의사항
- UPhysicsHandleComponent를 사용하기 위해서는 대상 오브젝트가 물리적 상호작용을 지원해야 합니다(예: UPrimitiveComponent에 물리 활성화).
- 물리 시뮬레이션을 정확하고 안정적으로 처리하기 위해서는 적절한 물리 설정과 파라미터 조정이 필요합니다.
Inheritance Hierarchy
UObjectBase
UObjectBaseUtility
UObject
UActorComponent
UPhysicsHandleComponent
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/PhysicsEngine/PhysicsHandleComponent.h
Include : #include "PhysicsEngine/PhysicsHandleComponent.h"
Syntax : class UPhysicsHandleComponent : public UActorComponent
UPhysicsHandleComponent::GrabComponentAtLocationWithRotation
Unreal Engine에서 제공하는 UPhysicsHandleComponent의 메서드입니다. 이 메서드는 특정 위치와 회전으로 물리 기반의 컴포넌트를 잡아(manipulate) 조작하는 데 사용됩니다.
Module Engine
Header : /Engine/Source/Runtime/Engine/Classes/PhysicsEngine/PhysicsHandleComponent.h
Include : #include "PhysicsEngine/PhysicsHandleComponent.h"
Source : /Engine/Source/Runtime/Engine/Private/PhysicsEngine/PhysicsHandleComponent.cpp
Syntax :
void GrabComponentAtLocationWithRotation
(
class UPrimitiveComponent * Component,
FName InBoneName,
FVector Location,
FRotator Rotation
)
매개변수:
- ComponentToGrab : 잡을 대상 컴포넌트로, UPrimitiveComponent의 인스턴스입니다.
- InBoneName : 특히 스켈레탈 메시에서 특정 뼈를 지정할 때 사용됩니다. 물리 컴포넌트가 스켈레탈 메시가 아닌 경우, 보통 NAME_None을 사용합니다.
- Location : 컴포넌트를 잡을 위치입니다.
- Rotation : 컴포넌트를 잡을 때 적용할 회전입니다.
UPhysicsHandleComponent::SetTargetLocationAndRotation
Unreal Engine에서 UPhysicsHandleComponent의 메서드로, 물리적으로 잡고 있는 오브젝트의 목표 위치와 회전을 설정하는 데 사용됩니다. 이 메서드는 일반적으로 플레이어가 오브젝트를 들어 올려 이동시키는 상호작용을 구현할 때 사용됩니다.
사용 방법
SetTargetLocationAndRotation 메서드는 물리 오브젝트를 사용자 정의 위치와 방향으로 부드럽게 이동시키는 데 사용됩니다. 이 메서드는 UPhysicsHandleComponent가 이미 어떤 오브젝트를 잡고 있을 때 효과적으로 작동합니다.
예를 들어, 플레이어가 오브젝트를 들어 올려 다른 위치로 이동시키고, 특정 방향으로 회전시키고 싶을 때 이 메서드를 사용할 수 있습니다.
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/PhysicsEngine/PhysicsHandleComponent.h
Include : #include "PhysicsEngine/PhysicsHandleComponent.h"
Source : /Engine/Source/Runtime/Engine/Private/PhysicsEngine/PhysicsHandleComponent.cpp
Syntax :
void SetTargetLocationAndRotation
(
FVector NewLocation,
FRotator NewRotation
)
매개변수
- NewLocation : 잡고 있는 오브젝트가 이동할 새로운 위치를 나타내는 FVector입니다.
- NewRotation : 잡고 있는 오브젝트가 적용받을 새로운 회전을 나타내는 FRotator입니다.
주의사항
- UPhysicsHandleComponent를 사용하기 전에, 대상 오브젝트가 물리 시뮬레이션을 지원하도록 설정되어 있어야 합니다.
- GrabComponent 또는 GrabComponentAtLocationWithRotation 등을 사용하여 먼저 오브젝트를 잡고 난 후에 SetTargetLocationAndRotation을 호출해야 합니다.
UPrimitiveComponent
UPrimitiveComponent
`UPrimitiveComponent`는 Unreal Engine에서 제공하는 기본 컴포넌트 클래스 중 하나로, 모든 "기본적인" 렌더링 가능 컴포넌트의 기반이 됩니다. 이 클래스는 시각적 표현과 물리적 상호작용을 모두 처리할 수 있는 기능을 제공합니다.
주요 특징과 기능
- 시각적 표현: UPrimitiveComponent는 3D 모델, 라이트, 카메라 등 시각적 요소를 게임 세계에 표현하는 데 사용됩니다.
- 충돌 처리: 이 컴포넌트는 충돌 검출 및 처리 기능을 제공합니다. 개발자는 이를 사용하여 오브젝트 간의 물리적 상호작용을 구현할 수 있습니다.
- 물리 시뮬레이션: UPrimitiveComponent는 물리 시뮬레이션을 지원하며, 물리 엔진과 연동하여 오브젝트의 동적인 움직임을 처리할 수 있습니다.
- 위치, 회전, 크기: 이 컴포넌트는 위치, 회전, 크기 등의 공간적 속성을 가지며, 이를 통해 게임 세계 내에서 오브젝트의 배치를 결정합니다.
- 다양한 파생 클래스: UStaticMeshComponent, USkeletalMeshComponent, UParticleSystemComponent 등은 UPrimitiveComponent를 상속받은 클래스들로, 특정 유형의 시각적 요소를 표현합니다.
사용 예시
- 정적 메시(Static Mesh) 표현: UStaticMeshComponent는 정적인 3D 오브젝트를 표현하는 데 사용되며, 건물, 가구 등의 비동적인 환경 요소를 구현하는 데 주로 사용됩니다.
- 스켈레탈 메시(Skeletal Mesh) 표현: USkeletalMeshComponent는 복잡한 애니메이션을 가진 캐릭터나 동적인 오브젝트를 표현하는 데 사용됩니다.
- 파티클 시스템: UParticleSystemComponent는 특수 효과, 화재, 연기 등의 파티클 기반 효과를 표현하는 데 사용됩니다.
주의사항
- UPrimitiveComponent는 추상 클래스이므로 직접 인스턴스를 생성할 수 없으며, 구체적인 기능을 제공하는 파생 클래스를 사용해야 합니다.
- 게임의 성능과 상호작용을 고려하여 적절한 충돌, 물리, 렌더링 설정을 적용하는 것이 중요합니다.
UPrimitiveComponent::WakeAllRigidBodies
UPrimitiveComponent 클래스의 일부로 제공됩니다. 이 메서드는 컴포넌트에 속한 모든 강체 물리 시뮬레이션(rigid body physics simulation)을 활성화합니다.
Override Hierarchy
UPrimitiveComponent::WakeAllRigidBodies()
USkeletalMeshComponent::WakeAllRigidBodies()
Module : Engine
Header : /Engine/Source/Runtime/Engine/Classes/Components/PrimitiveComponent.h
Include : #include "Components/PrimitiveComponent.h"
Source : /Engine/Source/Runtime/Engine/Private/PrimitiveComponentPhysics.cpp
Syntax : virtual void WakeAllRigidBodies()
주요 기능
- 물리 시뮬레이션 활성화: 게임 내에서 물리적으로 비활성화되거나 "잠든(sleeping)" 상태의 물리 객체들을 깨워서 다시 활성화합니다. 물리 객체가 "잠든" 상태는 물리 시뮬레이션이 필요 없을 때 성능을 최적화하기 위해 사용됩니다.
- 동적 상호작용: 이 메서드를 호출하면 해당 컴포넌트의 모든 강체가 다시 동적으로 반응하기 시작합니다. 예를 들어, 오브젝트가 다른 오브젝트와 충돌하거나 중력의 영향을 받게 됩니다.
사용 예시
- 잠든 물리 객체 깨우기: 오브젝트가 일정 시간 동안 움직이지 않아 물리 시뮬레이션이 중단된 상태에서, 플레이어의 상호작용이나 특정 게임 이벤트에 의해 다시 활성화되어야 할 때 사용할 수 있습니다.
- 게임 로직에 의한 활성화: 특정 조건이 충족될 때 물리 시뮬레이션을 재개하여 오브젝트가 움직이거나 반응하도록 하는 데 사용됩니다.
주의사항
- 이 메서드는 UPrimitiveComponent가 강체 물리 시뮬레이션을 지원하는 경우에만 유효합니다.
- 강체가 없거나 물리 시뮬레이션이 적용되지 않은 컴포넌트에 대해서는 영향을 주지 않습니다.
- 물리 시뮬레이션의 불필요한 활성화는 성능에 영향을 줄 수 있으므로, 게임의 특정 상황과 요구에 맞게 사용해야 합니다.
'Unreal 공부 > UE5 GameDev' 카테고리의 다른 글
[UE5] ToonTank (1) (0) | 2023.11.17 |
---|---|
[UE5][개념편] ToonTank (0) | 2023.11.17 |
[UE5] Crypt Raider (2) (0) | 2023.11.13 |
HitResult.Location 과 HitResult.ImpactPoint의 차이 (0) | 2023.11.11 |
LineTraceMultiByChannel의 정의 그리고 SingleByChannel과의 차이점 (0) | 2023.11.11 |