언리얼엔진

    폰(Pawn)

    폰(Pawn)

    폰(Pawn)이란? 언리얼에서 폰은 플레이어가 빙의하여 키보드 입력을 통해 움직이는등의 상호작용이 가능한 액터입니다. 폰과 액터의 차이는 먼저 이름이 MyPawn으로 Pawn클래스를 하나 만들었습니다. 보시는 바와 같이 APawn을 상속하고 있습니다. (A는 언리얼의 네이밍 컨벤션) 작명규칙 링크 코딩 표준 언리얼 엔진 4 코드베이스에 에픽게임즈가 사용하는 표준과 규칙입니다. docs.unrealengine.com Pawn의 구조가 궁금해서 타고 들어가서 보면, Actor를 상속받고 있는 것을 볼 수 있습니다. //MyPawn.h // Called to bind functionality to input virtual void SetupPlayerInputComponent(class UInputCompon..

    언리얼에서 로그 찍기

    언리얼에서 로그 찍기

    로그 사용법 //카테고리, 로깅 수준, 형식, 인자 UE_LOG(LogTemp,Warning,TEXT("BeginPlay %d"),3); 카테고리는 원하는걸 적으면 됩니다. 로깅 수준의 종류는 링크 에서 확인 가능합니다. (언리얼 에디터 상에서 색상이 바뀌고 파일로 기록이 남는등의 차이) 기본적으로 저장된 로그파일은 Saved\Logs 경로에서 확인할 수 있습니다. 그리고 형식,인자는 printf()에서 쓰는 방식처럼 쓰면 됩니다. 예시 void AMyActor::BeginPlay() { Super::BeginPlay(); //카테고리, 로깅 수준, 형식, 인자 UE_LOG(LogTemp, Warning, TEXT("BeginPlay %d"), 3); } 액터의 BeginPlay() 부분에 써봤습니다. ..

    액터(Actor) 기초

    액터(Actor) 기초

    언리얼에서 액터(Actor) 이란? 액터는 월드에 배치하는 오브젝트를 의미합니다. 물체의 가장 기본이 된다고도 볼 수 있습니다. 이번 포스트에서는 Actor에 겉모습을 지정해보겠습니다. 먼저 c++ 클래스로 Actor를 생성합니다. 이름은 MyActor 기본으로 생성하겠습니다. MyActor.h 와 MyActor.cpp 초기상태 //MyActor.h 초기상태 #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "MyActor.generated.h" UCLASS() class TISTORY_API AMyActor : public AActor { GENERATED_BODY() public: // Sets default..

    visible과 edit의 차이

    visible과 edit의 차이

    Visible, Edit의 차이? 왜 이렇게 쓸까 언리얼 코드를 짜다보면 UPROPERTY뒤 ( ) 사이에 쓰는 키워드들을 본 적이 있을 것입니다. 여기서 Visible과 Edit의 차이를 궁금해서 찾다가 알아낸 사실을 기록하려고 합니다. UPROPERTY(VisibleAnywhere) UStaticMeshComponent *Body; UPROPERTY(EditAnywhere,Category=IDtest) int32 ID; 언뜻봐서는 직관적으로 Visible은 언리얼에디터에서 수정이 불가능하겠지? Edit은 수정이 가능한것이겠지? 라고 생각했었습니다. 그러나 위 코드처럼 Body와 ID를 만들었을때 충격적이게도 Body에 속하는 속성들을 언리얼 상에서 수정이 가능하였고 ID또한 수정이 가능하였습니다. 그..

    Mobility(모빌리티) 세팅

    Mobility(모빌리티) 세팅

    Mobility란? Mobility (모빌리티) 세팅은 액터가 게임플레이 도중 어떤 방식으로 이동 또는 변화할 수 있도록 할지를 제어하는 세팅입니다. 이는 주로 스태틱 메시 액터나 라이트 액터에 적용됩니다. 이 설정에 따라서 빛을 어떻게 계산해주고 등등 성능적인 부분과 퀄리티측면에서 차이가 발생하게 됩니다. 모빌리티 프로퍼티에 가능한 상태는 세 가지입니다: 액터 모빌리티 링크 액터 모빌리티 액터를 게임플레이 도중 어떤 방식으로 이동 또는 변화할 수 있도록 할지를 제어하는 세팅입니다. docs.unrealengine.com 라이트 모빌리티 링크 라이트 모빌리티 라이트 모빌리티와 그것이 빛과 그림자에 어떠한 영향을 끼치는지에 대한 설명서입니다. docs.unrealengine.com 간단하게 요약하자면 Mo..

    언리얼에서 TSubClassof< >는 무엇일까? 그냥 포인터와의 차이

    언리얼에서 TSubClassof< >는 무엇일까? 그냥 포인터와의 차이

    위와같이 사용할때가 있는데 왜 존재하는지 궁금해서 찾아보았습니다. 언리얼 엔진에서 UClass타입 안정성을 보장하는 템플릿 클래스로, TSubclassOf에 전달된 대상이 꺽쇠괄호()안에 넣어준 템플릿 인자의 타입과 일치하거나 템플릿 인자로 받은 타입을 상속받은 타입인지를 런타임 중에 확인하도록 도와주는 클래스입니다. 위와같은 경우도 그냥 바로 class UUserWidget* HpHud_Class 로 해도 될것같은데 안정성을 위하여 보통 이렇게 쓰는것 같습니다. TSubclassOf를 사용한는 것과 바로 포인터하는 것의 차이!!!(중요) UDamageType* dmgType; //인스턴스(이미 생성된 오브젝트)를 가리킴!!! UClass* DamageType; //클래스를 가리킴 TSubclassOf ..

    맵 구성의 기본 ( 레벨(맵) 생성, 하늘, 태양, 대기 )

    맵 구성의 기본 ( 레벨(맵) 생성, 하늘, 태양, 대기 )

    레벨 추가 얼리얼에서 흔히 생각하는 맵은 레벨(level)로 표현됩니다. 따라서 먼저 새로운 레벨을 추가해줍니다. 생성된 레벨을 열어보면 아무것도 없는 어두운 화면이 나타납니다. 라이트(Lights) 추가 먼저 디렉셔널 라이트(Directional Light)를 추가해줍니다. 빛이 시작하는 지점도없고 끝나는 지점도없고 방향성만 가지고 있는 무한히 뻗어나가는 빛입니다. 즉, 태양빛을 표현하는 등 다양한 사용할 수 있습니다. 근데, 레벨에디터에 이 디렉셔널 라이트를 추가해줘도 아무 빛이 보이지 않는데, 이는 빛을 반사할 것이 아무것도 없기 때문입니다. 그렇기 때문에 대기를 추가해 보겠습니다. 애트머스페릭 포그(Atmospheric Fog)를 추가해주면 이제 빛을 반사해줄 대기가 생겨서 대충 생각한대로 세팅이..

    리타겟팅(애니메이션 이전)

    리타겟팅(애니메이션 이전)

    먼저, 애니메이션을 옮겨줄 원하는 애셋을 프로젝트에 추가해줍니다. 저는 아래 에셋을 사용하겠습니다. 먼저 마네킹 스켈레탈메시를 클릭해줍니다. 스켈레톤탭에서 리타깃 매니저를 누른 후, 릭선택-인간형 릭 선택을 누르고 저장해줍니다. 추가한 에셋의 스켈레탈 메시 고릅니다. 마찬가지로 스켈레톤탭에서 릭선택-인간형 릭 선택을 누르고 저장해줍니다. 미리 만들어놓거나( https://igh01ti.tistory.com/26?category=1034990 컨트롤릭을 사용해 애니메이션 제작법) 아니면 다운받은 애니메이션을 우클릭-애님 에셋 리타깃-애님 에셋 복제후 리타깃을 누릅니다. 정상적으로 과정을 진행했다면 타깃 스켈레톤 목록에 추가한 에셋의 스켈레톤메시가 뜰 겁니다. 선택하고 폴더를 정하고 리타깃해줍니다. 그럼 이..