묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
GameMode, PlayerController 부모 클래스 문제
안녕하세요.현재 버전은 5.2.1 버전으로 진행중이고샘플 프로젝트는 인프런에서 다운받아서 진행했습니다.3분 20초 쯤 내용처럼 새로 만든 프로젝트의 Content 폴더에 샘플프로젝트에 있는 ArenaBattle 폴더를 복사해서 붙여넣고 실행했는데 맵에 캐릭터와 조작은 잘되는데 UI가 안나와서 살펴보던중 BP_ABGameMode와 BP_ABPlayerController가 부모클래스가 없어서 문제가 발생한거 같더라구요.샘플 프로젝트에서는 각자 C++ 클래스를 부모클래스로 상속하고 있는 것 같던데 해당 C++클래스도 같이 옮겨 넣고 진행해야 되나요??
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
루트모션 질문
안녕하세요 강사님!루트 모션 관련해서 질문이 있습니다.루트 모션의 움직이는 정도를 런타임에 조절할 수 있는 방법이 있나요?차징 공격 중 차징된 정도에 따라서 더 많은 거리를 이동하게 만들어주고 싶은데, 이 공격할 때 애니메이션이 루프모션이라면 루프모션의 움직이는 정도를 건드려야 하더라구요..
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
복습중에 include 인텔리전스 질문드립니다.
포맷 후에 다시 복습중에 있습니다.강사님께서 include "Player/ABPlayerController.h" 저희가 선언한 c++과 include "Components/ProgressBar.h" 언리얼에서 제공해주는 헤더파일 같이 모든 폴더에 인텔리전스가 잘 작동하여 강의영상에서 include 추가 시에 용이해보입니다. 근데, 이번에 제가 다시 비쥬얼스튜디오2022 등 다 재설치 + 언리얼1강 설정 등 모든 방법을 해봐도 include 인텔리전스가 잘 작동하지않는데 제가 놓친 부분이 있을까요 ?
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 실전편
총관련 질문
안녕하세요 강사님, 총기 관련해서 구현 중에 궁금한 점이 생겨서 질문합니다.언리얼 팹 마켓을 보면 총과 탄창이 합쳐져있는 스켈레톤 메쉬로 되어 있는 에셋들이 많이 있더라고요. 근데 이걸 왜 합쳐놓은건지 이해가 잘 안됩니다. 분리가 되어 있으면 작업하기 더 좋을 것 같은데 말이죠.. 그래서 직접이 이 에셋을 탄창과 총 부분을 분리시켜 재작업해야하는건지, 혹은 스켈레톤 메쉬로 총과 탄창이 병합되어 있어도 그걸 이용해서 장전 모션같은걸 작업할 수 있는 방법이 있는지가 궁금합니다.
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
에임오프셋 질문
안녕하세요 강사님! 언리얼이 쉽지 않네요, 본론으로 질문하겠습니다.현재 상황 조준 상태일 때 상체에 에임오프셋을 적용시켰는데 비정상적으로 동작하는 현상1번 사진은 에임오프셋이고 Pitch만 받아서 사용함, 2번 사진은 인게임에서 해당 에임오프셋을 적용한 상태로 Pitch값은 0으로 둘다 동일함, 하지만 인게임에서는 손 위치가 밑에 떨어져 있음구현하고자 하는 기능 조준 상태일 때, basePose에서 상체에 에임오프셋을 적용하여 상하로 움직이는 상태로 만들어주고 싶음 코드 설명 및 구현한 방법 BasePose는 IdleWalkRun의 블랜드스페이스로 적용이 되어 있고, 착용가능한 무기에 따라서 각기 다른 IdleWalkRun을 구현할 수 있도록 만듬우클릭을 누르면 조준상태가 되며 관련 정보는 Cpp내부에서 처리MainState에서 스테이트 에얼리어스를 추가하여 조준 상태일 때, Aiming스테이트로 이동하게 만들고Aiming 상태에서 가지고 있는 장비타입에 따라 다른 에임오프셋들을 적용시켜주고, 해당 에임오프셋과 BasePose를 Layerd blend per bone으로 섞어 상체는 에임오프셋, 하체는 기존 BasePose를 사용하도록 애니메이션을 섞음 구글 드라이브 링크https://drive.google.com/file/d/1X1tpQo5A2J-XeGTXWUaEiWsjXJ1j4Th_/view?usp=sharingPS. 우클릭을 누르고 있으면 조준상태로 바뀌며, 콘솔창에 Handle Pistol, Fist, Rifle을 입력하면 현재 캐릭터가 착용하는 무기타입이 바뀌게 설정해놨습니다.
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
월드파티션 질문 - 미니맵
안녕하세요 강사님, 강의 잘 시청하고 있습니다.월드 파티션 쪽 공부하다가 GTA스타일로 미니맵을 구현해보고 싶어서 질문드립니다.현재는 단순하게 위에서 아래로 직교로 런타임 단위로 촬영하는 카메라를 도입하여 구현 한 상황입니다.하지만 GTA같은 거대한 오픈월드의 미니맵을 구현할 때, 모든 엑터를 동적으로 촬영하는 것은 비효율적이라 생각하기에 마음에 들지 않는 상황입니다.그래서 새롭게 구현하고자 하는 방식은 동적 엑터와 정적 엑터를 나눠서 구현하는 것입니다. 동적엑터는 런타임에 생성되거나 움직이는 엑터 ex) 플레이어나, 적, 미션위치, 기타 등등 2. 정적엑터 런타임에 수정되지 않고 고정되어 있는 엑터 ex) 도로나, 건물 기타 등등정적 엑터를 미리 Texture로 깔아 놓고 동적 엑터만 위에 깔아두는 식으로 설계하면 성능적으로 더 효율적일꺼라 생각했습니다.그래서 먼저 맵에 깔려있는 도로나 건물같은 정적 엑터들을 미리 Texture로 만들 수 있는 방법을 찾아보다가 베이킹이라는 용어도 알게되었고, World Partition Minimap 및 World Partition Minimap Volume이라는 걸 찾았습니다. 이걸 이용해서 현재 레벨의 맵을 베이킹할 수 있다고 하는데 그 방법을 당최 모르겠습니다.언리얼 5.4에서 도입되었다고 하는데, World Partition Minimap, World Partition Minimap Volume을 이용하면 현재 레벨의 맵을 베이킹할 수 있는지도 궁금하고, 만약 안된다고 하면현재 레벨의 맵을 어떻게 베이킹할 수 있는지 궁금합니다.
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
애니메이션 질문
안녕하세요 강사님 애니메이션 강의를 보며 프로젝트에 적용 중인 학생입니다.블루프린트에서 애니메이션을 구현하는 부분에서 궁금한점이 생겨 질문드립니다.착지 Additive를 구현 중이고, 떨어지는 상태에 맞는 애니메이션을 에셋을 드롭하여 Apply Addtive에 추가를 해주고 싶은데특정 상태에 맞는 애니메이션을 선택하는 방법을 찾지 못하고 있습니다. 참고 사진 : State:Land안에 있는 노드 정보어떻게 하면 M Fall State에 따라서 Controlled Fall과 Uncontrolled Fall에 맞는 애니메이션을 선택하여 Apply Addtive의 Additive에 넣어줄 수 있을까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
BBAsset 과 UseBlackboard(BBAsset, BlackBoardPtr) 를 작성한 이유가 궁금합니다.
BBAsset 은 BTAsset 을 통해서 가져올 수 있는데, BBAsset 을 변수로 선언하신 이유가 궁금합니다. 또한 RunAI 함수에서 UseBlackboard 를 사용하셨는데, RunBehaviorTree 함수 내부에서 동일한 기능을 수행하고 있습니다. RunBehaviorTree 를 사용하기에 앞서 UseBlackboard 를 사용하신 이유가 궁금합니다.
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 실전편
수강 전 질문
안녕하세요.강의 초반 버전 관련 영상을 보고 질문 드립니다. 강의마다 언리얼 버전이 바뀌는데, 영상에서 언리얼 버전을 올리면 다시 내릴 수 없다고 말씀 주셨습니다.그럼 강의를 따라가며 버전을 올렸을 경우, 다음 파트가 낮은 버전이 필요 할 때는 어떻게 진행하면 될까요?언리얼버전을 5.0버전 부터 5.6버전까지 다 깔아둬야하나요?유료강의와 다르게 무료강의(실전편)에는 파트마다 버전 표시가 안되어있는데, 이는 전체 버전이 다 호환되는건가요?
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 실전편
static mesh는 언리얼 기본 에셋인가요?
현재 5.6 버전을 사용하고 있습니다.shape_Wedge가 없는데 어디서 받을 수 있는지 궁금합니다!
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
C++ 코드에서 캐릭터 컴포넌트 설정 이유
안녕하세요. 강의 복습 중 궁금한 점이 있어서 질문 남깁니다.CharacterBase 클래스의 생성자에서 Pawn과 Capsule Component, Movement Component, Skeletal Mesh Component 설정을 하고 있는데, 에디터에서 블루프린트에 직접 컴포넌트를 설정하는 것과 차이점이 무엇인지 궁금합니다.차이가 없다면 왜 C++ 코드에서 이를 설정해주셨는지 알고 싶습니다.AHSCharacterBase::AHSCharacterBase() { // Pawn bUseControllerRotationRoll = false; // X bUseControllerRotationPitch = false; // Y bUseControllerRotationYaw = false; // Z // Capsule GetCapsuleComponent()->InitCapsuleSize(50.f, 100.f); GetCapsuleComponent()->SetCollisionProfileName(CPROFILE_HSCAPSULE); // Movement GetCharacterMovement()->bOrientRotationToMovement = true; GetCharacterMovement()->RotationRate = FRotator(0.f, 360.f, 0.f); // Pitch, Yaw, Roll GetCharacterMovement()->JumpZVelocity = 500.f; GetCharacterMovement()->AirControl = 0.35f; GetCharacterMovement()->MaxWalkSpeed = 500.f; GetCharacterMovement()->MinAnalogWalkSpeed = 20.f; GetCharacterMovement()->BrakingDecelerationWalking = 2000.f; // Mesh GetMesh()->SetRelativeLocationAndRotation(FVector(0.f, 0.f, -100.f), FRotator(0.f, -90.f, 0.f)); GetMesh()->SetAnimationMode(EAnimationMode::AnimationBlueprint); GetMesh()->SetCollisionProfileName(TEXT("NoCollision")); static ConstructorHelpers::FObjectFinder<USkeletalMesh> CharacterMeshRef(TEXT("/Script/Engine.SkeletalMesh'/Game/ParagonKwang/Characters/Heroes/Kwang/Meshes/Kwang_GDC.Kwang_GDC'")); if (CharacterMeshRef.Object) { GetMesh()->SetSkeletalMesh(CharacterMeshRef.Object); } static ConstructorHelpers::FClassFinder<UAnimInstance> AnimInstanceClassRef(TEXT("/Game/HackAndSlash/Animations/ABP_HSCharacter.ABP_HSCharacter_C")); if (AnimInstanceClassRef.Class) { GetMesh()->SetAnimInstanceClass(AnimInstanceClassRef.Class); } static ConstructorHelpers::FObjectFinder<UHSCharacterControlData> ShoulderDataRef(TEXT("/Script/HackAndSlash.HSCharacterControlData'/Game/HackAndSlash/CharacterControl/HSC_Shoulder.HSC_Shoulder'")); if (ShoulderDataRef.Object) { CharacterControlManager.Emplace(ECharacterControlType::Shoulder, ShoulderDataRef.Object); } static ConstructorHelpers::FObjectFinder<UHSCharacterControlData> QuaterDataRef(TEXT("/Script/HackAndSlash.HSCharacterControlData'/Game/HackAndSlash/CharacterControl/HSC_Quater.HSC_Quater'")); if (QuaterDataRef.Object) { CharacterControlManager.Emplace(ECharacterControlType::Quater, QuaterDataRef.Object); } static ConstructorHelpers::FObjectFinder<UAnimMontage> ComboActionMontageRef(TEXT("/Script/Engine.AnimMontage'/Game/HackAndSlash/Animations/AM_ComboAttack.AM_ComboAttack'")); if (ComboActionMontageRef.Object) { ComboActionMontage = ComboActionMontageRef.Object; } static ConstructorHelpers::FObjectFinder<UHSComboActionData> ComboActionDataRef(TEXT("/Script/HackAndSlash.HSComboActionData'/Game/HackAndSlash/CharacterAction/HSA_ComboAttack.HSA_ComboAttack'")); if (ComboActionDataRef.Object) { ComboActionData = ComboActionDataRef.Object; } static ConstructorHelpers::FObjectFinder<UAnimMontage> DeadMontageRef(TEXT("/Script/Engine.AnimMontage'/Game/HackAndSlash/Animations/AM_Dead.AM_Dead'")); if (DeadMontageRef.Object) { DeadMontage = DeadMontageRef.Object; } }
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
HLOD 관련 질문입니다.
빌드를 잘하고 테스트를 하고 있는데 일단 저는 HLOD레이어를 두가지로만 해서 테스트 해봤는데 이런식으로 멀리 있는 메시들이 마테리얼이 날라간 체로 보이네요. 그리고 중간부분만 날라가는 현상이 있습니다. 이게 빌드 및 Hlod 적용이 된건가요? 그리고 왜 마테리얼이 날라가는 것처럼 보이는지 모르겠네요
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
월드파티션의 HLOD 빌드가 안되네요
똑같이 따라했는데 빌드HLOD에서만 자꾸 에러가 뜨네요
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 실전편
캐릭터가 달릴 때, 콜리전 박스를 지날때 애니메이션이 튑니다.
안녕하세요. 강의 잘 듣고 있습니다. 캐릭터가 달릴 때, 콜리전 박스를 지날때 애니메이션이 튑니다.제것만 그런줄 알았는데... 강의 자료 영상에도 반복적으로 뛰는 애니메이션이 튀는 구간이 발생하는 게 보입니다. 어떻게 해결해야 할까요?
-
미해결[입문자를 위한 UE5] Part5. 언리얼 엔진 VR
vr ui 자동으로 뜨게하기ㅠㅠ
begin play 끝에 delay는 연결했는데 3d widget 띄우는 함수가 뭔지 모르겠어요..
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
제가 만든 폴더와 c++파일이 콘텐츠 브라우저에도 표기되지 않고
ABGameMode도 선택했고 코드에서 플레이어 컨트롤러도 제대로 바꿨는데 다음과 같은 오류가 떴습니다Couldn't spawn player: Failed to spawn player controller그래서 계속 문제를 붙잡고 씨름하다가 엔진을 껐다가 켜니까 이젠 아예 게임 모드가 없어졌네요 일단 프로젝트를 새로 만들어서 다시 해볼생각이긴 한데 이게 왜 이런건지 모르겠네요
-
미해결[입문자를 위한 UE5] Part5. 언리얼 엔진 VR
vr 핸드메쉬 블루프린트 질문..
여기 트레이스 채널에 3DWidget이 안뜨는데 이건 어떻게 해야하나요? 그리고 저는 컴포넌트에 PointFingerArea를 아무리 검색해봐도 안나오는데 어떻게 추가해야하는지 모르겠습니다 ㅜㅜ
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
ABItemBox 아이템 에셋 배열이 비어있는 경우 크래쉬
LoginId:a941906b4a64d255e61742bb3c03f580 EpicAccountId:06c1d8e5195c4b94839c2f03669096c0 Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:D:\Epic Games\UE_5.4\Engine\Source\Runtime\Core\Public\Containers\Array.h] [Line: 758] Array index out of bounds: 0 into an array of size 0 UnrealEditor_ArenaBattle!AABItemBox::PostInitializeComponents() [C:\Users\jinhy\Desktop\Unreal\Inflearn\UE5Part2\ArenaBattle\Source\ArenaBattle\Item\ABItemBox.cpp:54] UnrealEditor_Engine UnrealEditor_Engine 강의 내용 중 ABItemPotionData와 ABItemScrollItemData 클래스를 생성한 뒤 코드를 똑같이 입력하고 에디터 실행했더니 위 에러 메시지와 함께 에디터가 열리지 않고 있습니다.DefaulGame.ini의 셋팅도 문제 없습니다.+PrimaryAssetTypesToScan=(PrimaryAssetType="ABItemData",AssetBaseClass="/Script/ArenaBattle.ABItemData",bHasBlueprintClasses=False,bIsEditorOnly=False,Directories=((Path="/Game/ArenaBattle/Item")),SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown)) bOnlyCookProductionAssets=False bShouldManagerDetermineTypeAndName=False bShouldGuessTypeAndNameInEditor=True bShouldAcquireMissingChunksOnLoad=False bShouldWarnAboutInvalidAssets=True MetaDataTagsForAssetRegistry=() // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Item/ABItemData.h" #include "GameData/ABCharacterStat.h" #include "ABScrollItemData.generated.h" /** * */ UCLASS() class ARENABATTLE_API UABScrollItemData : public UABItemData { GENERATED_BODY() public: UABScrollItemData(); FPrimaryAssetId GetPrimaryAssetId() const override { return FPrimaryAssetId("ABItemData", GetFName()); } public: UPROPERTY(EditAnywhere, Category = Stat) FABCharacterStat BaseStat; }; // Fill out your copyright notice in the Description page of Project Settings. #include "Item/ABScrollItemData.h" UABScrollItemData::UABScrollItemData() { Type = EItemType::Scroll; } // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Item/ABItemData.h" #include "ABPotionItemData.generated.h" /** * */ UCLASS() class ARENABATTLE_API UABPotionItemData : public UABItemData { GENERATED_BODY() public: UABPotionItemData(); FPrimaryAssetId GetPrimaryAssetId() const override { return FPrimaryAssetId("ABItemData", GetFName()); } public: UPROPERTY(EditAnywhere, Category = Stat) float HealAmount; }; // Fill out your copyright notice in the Description page of Project Settings. #include "Item/ABPotionItemData.h" UABPotionItemData::UABPotionItemData() { Type = EItemType::Potion; } ABItemBox.cpp 의 에셋 매니저에서 에셋을 불러올 때 배열이 비어있는 것 같습니다.void AABItemBox::PostInitializeComponents() { Super::PostInitializeComponents(); UAssetManager& Manager = UAssetManager::Get(); TArray<FPrimaryAssetId> Assets; Manager.GetPrimaryAssetIdList(TEXT("ABItemData"), Assets); ensure(0 < Assets.Num()); int32 RandomIndex = FMath::RandRange(0, Assets.Num() - 1); FSoftObjectPtr AssetPtr(Manager.GetPrimaryAssetPath(Assets[RandomIndex])); if (AssetPtr.IsPending()) { AssetPtr.LoadSynchronous(); } Item = Cast<UABItemData>(AssetPtr.Get()); ensure(Item); Trigger->OnComponentBeginOverlap.AddDynamic(this, &AABItemBox::OnOverlapBegin); } 깃헙에 올려주신 코드와 비교해보았는데 다른 부분이 없어서 어느 것이 문제인지 알고 싶습니다.에디터가 열리지 않아서 설정을 확인할 수 없습니다。추가로, 올려주신 프로젝트를 다운받아 실행했더니 똑같은 문제가 발생했습니다..
-
미해결[입문자를 위한 UE5] Part5. 언리얼 엔진 VR
선생님 짱짱~!!
collision preset에 3DWidget이 어딨는지 잘몰랐는데 왜 이런 메뉴가 없는지 몰랐는데 선생님덕분에 해결했습니다 감사합니다!
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
SetupGASInputComponent 함수 호출위치가 이해가안갑니다.
void AABGASCharacterPlayer::PossessedBy(AController* NewController) { Super::PossessedBy(NewController); AABGASPlayerState* GASPS = GetPlayerState<AABGASPlayerState>(); if (GASPS) { ASC = GASPS->GetAbilitySystemComponent(); ASC->InitAbilityActorInfo(GASPS, this); int32 InputId = 0; for (const auto& StartAbility : StartAbilites) { FGameplayAbilitySpec StartSpec(StartAbility); StartSpec.InputID = InputId++; ASC->GiveAbility(StartSpec); SetupGASInputComponent(); } } }위 코드에서 제생각에는 서버에서는 input과 관련된 처리가 전혀 필요가 없기 때문에 SetupGASInputComponent 를 안넣어도 될것같은대요. 혹시 꼭 넣으셔야만 하는 이유가있을까요? (그리고 for문안에 두신건 단순 실수이신것 같습니다.) => for문안에 넣으셨던 것은 나중에 수정해주셨네요. 확인했습니다.클라는 참고로 아래코드를 씁니다.void AABGASCharacterPlayer::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); SetupGASInputComponent(); }