묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 오픈월드 도시형 게임
레이어드 블랜드 퍼 본에서 pelvis 동작 이슈
pelvis로 넣으면 다음과 같이 하체가 블랜딩 되지 않습니다. (타이핑 오류는 아닙니다 몇 번이고 확인했습니다) spine_01로 임시로 넣어서 확인해봤는데 약간 상체쪽이라 그런지 상체가 상당히 많이 흔들리네요(spine_01로 했을때) 관련된 해결책이 있을까요 혹시?
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 오픈월드 도시형 게임
수업 재밌게 잘 듣고 있습니다
모델링쪽에는 큰 관심이 없는데 강의 내역을 쭉 보다보니 대략 10시간 분량의 모델링 툴 강의가 있던데 혹시 스킵하더라도 이후 프로젝트 강의를 진행하는데 문제가 있을까요? 또한 모델링 툴을 이해하고 다루는 지식이 언리얼 게임 개발자로써 필요한 역량인지도 조금 궁금합니다.개인 작품을 준비하는 학생으로써 개발 기획만 생각해봤지 직접 모델링까지 하는건 유니티에서 픽셀찍는 정도로만 생각했었거든요.
-
미해결[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
CreateInnerProcessPIEGameInstance 함수에서
안녕하세요!처음 엔진을 초기화할 때 World->InitializeNewWorld()에서도 에디터 월드를 대상으로 (1) UpdateWorldComponents()를 호출하는데,CreateInnerProcessPIEGameInstance()에서 호출하는 World->InitializeActorsForPlay()에서도 (2) UpdateWorldComponents()가 있어서요.PIE 월드를 GetDuplicateWorldForPIE()를 통해 전부 복사하는 것 아니었나요? StaticDuplicateObjectEx 내부에 subobject도 복사하는 코드가 있구요. 비록 (2)번은 PersistentLevel에 한해 업데이트를 진행하지만, (1)번에서 에디터 월드를 대상으로 한 업데이트 내용이 (2) PIE월드로 넘어오면서 소실되는 것인지 궁금합니다.좋은 강의 감사드립니다비록 ㅇStaticDuplicateObjectExGetDGuplicateWor
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
StartAbility, StartInputAbility 둘 다 GiveAbility를 호출해야하나요?
안녕하세요 교수님. 좋은 강의 항상 감사합니다.강의 후반부에 StartInputAbility에 태그를 달아주는 부분을 보여주셨는데 그렇다면 강의 초반에 사용했던 StartAbility, StartInputAbility들 모두에 GiveAbility를 호출해야하나요? 제 생각에는 StartInputAbility에만 해줘도되지 않나 궁금해서 질문드립니다. 감사합니다
-
해결됨언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
[3:35] 카메라 컴포넌트의 좌표 관련 질문
안녕하세요 좋은 강의 감사합니다.3분 35초 정도에 카메라 컴포넌트는 StaticMesh 하위 컴포넌트로 있고, 따라서 스태틱 메시의 위치를 기준으로 상대적인 좌표로 움직인다고 말씀하셨습니다.그렇다면 카메라의 원점이 스태틱 메시의 위치라고 보면 될까요?
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
AnimNotify 구현 질문
AnimNotify 를 상속받아 Custom AnimNotify 를 만들고 Animation blueprint 의 track 에 추가했습니다. 잘 작동한 듯 하나, 에디터를 껐다 켜면, 트랙상에 AnimNotify 가 녹색으로 바뀌어 있고 동작하지 않습니다. 지우고 새로 작성, 리빌드 다 해봤는데 안됩니다. 에디터에서 클래스를 인식하지 못하면 녹색으로 나온다고 하는데 어떻게 수정해야 하나요? 에디터가 켜져 있는 동안 추가하면분홍색으로 DeadCheck 라고 뜨는데껐다 켜서 확인하면 GASDeadCheck 라고 녹색으로 떠 있습니다.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
[6강] ShowDebug에서 Attributes for avater가 변하지 않아요..
https://github.com/YIDO96/AttributeErrorTest 엔진은 5.4.4입니다.ASC와 AttributeSet의 기본적인 코드만 작성한 상태입니다. 한번만 확인해주세요.. 어디가 문제인지 잘 모르겠습니다..
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
4강에서 콤보 공격시 다음 공격을 할 경우 ActivateAbility가 자동으로 발동되는 이유
언리얼 5.6으로 진행하다가 이상한 버그가 터져서 다시 5.4로 복습도 할겸 해서 처음부터 만들어보고 있는데 콤보 공격할 때 ActivateAbility가 발동되고 콤보의 첫번째 공격이 끝나게 되면 무조건 EndAbility가 발동합니다. 5.6으로 했을때와 5.4로 했을때의 코드적으로 다른점도 없는데왜 처음에는 첫번째 공격을 하고 두번째 콤보 공격을 하면 EndAbility가 아닌 ActivateAbility가 다시 호출되고,두번째 할때는 왜 첫번째 공격이 끝나면 무조건 EndAbility가 호출될까요..??ㅠ
-
미해결언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
블루프린트
블루프린트를 실무에서도 실제로 많이 사용하는지 궁금합니다.프로젝트 규모가 크고 복잡할 경우 그냥 코드로 전부 제어하는 게 나을 것 같다는 생각도 들어서요.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
9강 44:59 부분에서 질문이 있습니다.
현재 버전(5.6)에서 modifier op 는 Add가 아니라 Add(Base) 로 기재되어 있는데, 그럼에도 불구하고 강의의 내용과 똑같이 Current Value만을 변경합니다. 그렇다면 현재 버전의 Add(Base) 에서 Base 는 무슨 의미일까요...? 설명이 잘못된건가요? 마치 Base 에 Add를 하는 것 같아서 오히려 혼동을 불러일으키는 느낌인데
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
8강 24:22 CurrentAttributeSet 질문입니다.
정석적으로 코드를 변경하기 전에 에디터를 실행하려 하면 ensure(CurrentAttributeSet); 부분에서 에러가 발생하는데, 해당 시점에 CurrentAttributeSet 이 null 이라 에러가 발생하는 것이라면, 이를 피하기 위해 정석적으로 변경 한 후에 똑같은 시점에서 if문을 통과하는 방식으로 바꾼것 까진 이해했습니다.1. 근데 에디터 실행 시점에는 해당 CurrentAttriabuteSet 이 null 이었다가, 게임 시작 시점에는 값이 채워지는데 이유가 무엇인가요?게임 시작시점에는 문제 없으나 에디터를 실행할때 ensure 구문으로 인해 위와 같은 불필요한 크래쉬가 발생한다면, 그냥 ensure을 안쓰고 if문으로 처리하는게 일반적인가요?
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
ASC 에서 AttributeSet 함수에 대한 mutable 반환 함수가 없는 이유
안녕하세요. UABGA_AttackHitCheck::OnTraceResultCallback 구현에서 질문 드릴 게 있습니다. UABCharacterAttributeSet* TargetAttribute = const_cast<UABCharacterAttributeSet*>(TargetASC->GetSet<UABCharacterAttributeSet>()); 게임 로직 만들면서 AttributeSet 의 값을 변경해야 할 경우가 많을 것 같은데요. ASC 에서 변경가능한 AttributeSet 의 참조나 mutable 포인터를 반환하는 함수를 구현하지 않은 이유가 있나요?const_cast 로 억지로 const 를 벗겨내는 게 자연스럽게 느껴지진 않아서요. 다른 곳에서 값을 변경하게 코드를 작성해야 하는 디자인 측면이 있는 건지, 경험적인 정책 측면이 있는 건지 궁금해서 질문 드렸습니다.
-
해결됨언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
21번 강의와 22번 강의가 이어지지 않습니다.
제목 그대로 이어지지 않는 것 같습니다. 확인 부탁드립니다
-
해결됨언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
Layered blend per bone에 대해 질문 있습니다!
Blend Depth : 총 몇 단계 자손 본까지 blend 대상으로 포함을 시키겠다.ex pelvis(3) : pelvis로부터 3단계 자손까지 blend 대상으로 포함ex thigh_r(-1) : 이 본과 그 하위에 있는 본들을 이 blend 대상으로부터 제외 (허벅지 밑에 하위에 종속되어 있는 본들은 다 블렌드를 하지 않을 것)강의를 들으며 정리한 내용입니다.제가 잘 이해했는지 헷갈려서 질문드립니다.Base Pose가 재생되는 기본 포즈이고 , Blend Poses 0의 포즈에서 Layer setup을 통해 pelvis(3) 즉 3단계 자손까지 blend 한다. (하지만 음수인 thigh_l , thigh_r의 자손들은 blend하지 않는다.) 라고 이해하면 될까요?
-
미해결[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
AActor를 APhysicsVolume으로 Cast가 되는 이유
안녕하세요!아래 코드는 UPrimitiveComponent의 UpdatePhysicsVolume 함수인데, 컴포넌트의 owner인 액터를 가져와서 그대로 Cast<APhysicsVolume>을 했는데, 액터가 캐릭터일 수도 있을 텐데 이게 어떻게 가능한 것인지 모르겠습니다... 감사합니다// haker: just get the owner Actor and compare Physics Volume's priority APhysicsVolume* V = Cast<APhysicsVolume>(OtherComponent->GetOwner()); if (V && V->Priority > BestPriority) { if (V->IsOverlapInVolume(*this)) { BestPriority = V->Priority; BestVolume = V; } }
-
해결됨언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
IMC 매핑 관련 질문이 있습니다!
IA_Move에서 Negate(부정)설정 중XYZ 박스를 모두 체크하는 것은 특별한 이유가 있나요? (그렇게 하지 않아도 사용하지 않는 축의 영향을 받지 않기 때문에 그런 것으로 이해했습니다.)IA_Move 설정에서 후방 이동(S)과 마우스 Y축 부정의 개념이 살짝 혼동이 생겼습니다.(IA_Look에서 설명해주셨을 때 "엔진에서 Y 축의 양수는 아래 방향을 의미한다."는 말을 듣고 나니, IA_Move의 Y는 그럼 S키 입력에 부호를 바꾸는 것이 아니라(Negate) W키를 반전해야 하는 거 아닌가? 라는 생각이 들어서요.. W,S는 캐릭터를 기준으로 전방, 후방 값이기에 화면을 기준으로 한 Y축 방식과는 다르다고 해석하면 될까요?)
-
미해결[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
AActorComponent의 RegisterComponentWithWorld()에서 이어지는 Activate()에 관한 질문입니다
안녕하세요!Activate() 이후 PrimaryComponentTick.SetTickFunctionEnable()이 호출되는데,이후 GameWorld인지 Owner가 있는지 여부 등을 따져가며 RegisterAllComponentTickFunctions()를 호출할 때도 결국 SetupActorComponentTickFunction()을 통해 인자로 전달된 PrimaryComponentTick의 SetTickFunctionEnable()이 호출됩니다.왜 이렇게 같은 과정이 굳이 두 번이나 이루어지는지 궁금합니다물론 두 번째 단계에서는 등록 여부를 확인하여 걸러지지만 실행 조건을 살펴보아도 GameWorld가 아니라는 조건 때문에 두 번 실행될 가능성이 있는 것 같아 질문드립니다.읽어주셔서 감사드립니다.
-
해결됨언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
디폴트로 추가되는 데이터가 존재하지 않아 문의드립니다.
언리얼 5.6 버전으로 깔고 진행하는데 강좌를 보면 콘텐츠 브라우저 / 콘텐츠 폴더에 기본으로 생성 되서 들어가는 데이터가 있는 것 같은데(World, Level, Scene 강좌에서 보여졌던 의자 파티클 이 있는 레벨) 존재하지 않아서 문의 드립니다.
-
해결됨언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
C++과 에디터 로직 기능의 사용처 구분
영상 참조 [2:07]실무에서 게임을 개발할 때 C++을 안쓰고 에디터 기능인 Behavior Tree, Blackboard만으로 로직을 만들어야 하는 경우가 있을까요?두 방식을 각각 어떤 로직에 쓰는 것이 적합할 지 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 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(); }