[Unreal] 이득우의 언리얼 C++ 게임개발의 정석 9
·
Game Programming/Unreal
새로운 모듈 추가 - 모듈 제작을 위한 필요한 요소 - 모듈 폴더와 빌드 설정 파일 : 모듈 폴더와 모듈명으로 된 Build.cs 파일 - 모듈의 정의 파일 : 모듈명으로 된 .cpp 파일 - TestEditor.Target.cs와 Test.Target.cs에 TestSetting을 추가해준다. - 새로운 DLL파일이 생성됐다면 언리얼 에디터가 이 DLL파일을 로딩하도록 명령해준다. - Test.uproject에서 새로운 모듈에 대한 정보를 기입해야 하는데 새로운 모듈을 다른 모듈보다 먼저 로딩하도록 LoadingPhase 값을 "PreDefault"로 설정하고 Test모듈이 TestSetting 모듈에 대해 의존성을 가지도록 설정한다. INI 설정과 애셋의 지연 로딩 #pragma once #inclu..
[Unreal] 이득우의 언리얼 C++ 게임개발의 정석 8
·
Game Programming/Unreal
액터 컴포넌트의 제작 #pragma once #include "CoreMinimal.h" #include "Components/ActorComponent.h" #include "MyCharacterStatComponent.generated.h" UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) ) class TEST_API UMyCharacterStatComponent : public UActorComponent { GENERATED_BODY() public: UMyCharacterStatComponent(); protected: virtual void BeginPlay() override; virtual void InitializeComp..
[Unreal] 이득우의 언리얼 C++ 게임개발의 정석 7
·
Game Programming/Unreal
#include "DrawDebugHelpers.h" - 디버그 드로잉 기능을 가진 헤더 void AMyCharacter::PostInitializeComponents() { Super::PostInitializeComponents(); CAnim = Cast(GetMesh()->GetAnimInstance()); if (NULL == CAnim) return; CAnim->OnMontageEnded.AddDynamic(this, &AMyCharacter::OnAttackMontageEnded); CAnim->OnNextAttackCheck.AddLambda([this]()->void { CanNextCombo = false; if (IsComboInputOn) { AttackStartComboState..
[Unreal] 이득우의 언리얼 C++ 게임개발의 정석 6
·
Game Programming/Unreal
충돌체 - WorldStatic : 움직이지 않는 정적인 배경 액터에 사용하는 콜리전 채널. 주로 스태틱메시 액터에 있는 스태틱메시 컴포넌트에 사용. - WorldDynamic : 움직이는 액터에 사용하는 콜리전 채널. 블루프린트에 속한 스태틱메시 컴포넌트에 사용. - Pawn : 플레이어가 조종하는 물체에 사용. 캐릭터의 충돌을 담당하는 캡슐 컴포넌트에 사용. - Visibility : 배경 물체가 시각적으로 보이는지 탐지하는데 사용. 탐지에서 폰은 제외하고 마우스로 물체를 선택하는 피킹 기능을 구현할 때 사용. - Camera : 카메라 설정을 위해 카메라와 목표물 간에 장애물이 있는지 탐지하는데 사용. - PhysicsBody : 물리 시뮬레이션으로 움직이는 컴포넌트에 설정한다. 콜리전 프리셋의 물..
[Unreal] 이득우의 언리얼 C++ 게임개발의 정석 5
·
Game Programming/Unreal
애님 몽타주 //CAnimInstance.h private: UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Montage", Meta=(AllowPrivateAccess = true)) UAnimMontage* AttackMontage; UCAnimInstance::UCAnimInstance() { static ConstructorHelpers::FObjectFinder ATTACK_MONTAGE(TEXT("AnimMontage'/Game/Character/Warriors/Montages/AttackMontage.AttackMontage'")); if (ATTACK_MONTAGE.Succeeded()) { AttackMontage = ATT..
[Unreal] 이득우의 언리얼 C++ 게임개발의 정석 4
·
Game Programming/Unreal
애니메이션 - 애님 인스턴스 : 스켈레탈 메시를 소유하는 폰의 정보를 받아 애님그래프가 참조할 데이터를 제공한다. - 애님 그래프 : 애님 인스턴스의 변수 값에 따라 변화하는 애니메이션 시스템을 설계하는 공간. virtual void NativeUpdateAnimation(float DeltaSeconds) override; void UCAnimInstance::NativeUpdateAnimation(float DeltaSeconds) { Super::NativeUpdateAnimation(DeltaSeconds); ACharacter* character = Cast(TryGetPawnOwner()); if(::IsValid(character)) Speed = character->GetVelocity()..