현재 버전(5.6)에서 modifier op 는 Add가 아니라 Add(Base) 로 기재되어 있는데, 그럼에도 불구하고 강의의 내용과 똑같이 Current Value만을 변경합니다. 그렇다면 현재 버전의 Add(Base) 에서 Base 는 무슨 의미일까요...? 설명이 잘못된건가요? 마치 Base 에 Add를 하는 것 같아서 오히려 혼동을 불러일으키는 느낌인데
정석적으로 코드를 변경하기 전에 에디터를 실행하려 하면 ensure(CurrentAttributeSet); 부분에서 에러가 발생하는데, 해당 시점에 CurrentAttributeSet 이 null 이라 에러가 발생하는 것이라면, 이를 피하기 위해 정석적으로 변경 한 후에 똑같은 시점에서 if문을 통과하는 방식으로 바꾼것 까진 이해했습니다. 1. 근데 에디터 실행 시점에는 해당 CurrentAttriabuteSet 이 null 이었다가, 게임 시작 시점에는 값이 채워지는데 이유가 무엇인가요? 게임 시작시점에는 문제 없으나 에디터를 실행할때 ensure 구문으로 인해 위와 같은 불필요한 크래쉬가 발생한다면, 그냥 ensure을 안쓰고 if문으로 처리하는게 일반적인가요?
안녕하세요. UABGA_AttackHitCheck::OnTraceResultCallback 구현에서 질문 드릴 게 있습니다. UABCharacterAttributeSet* TargetAttribute = const_cast<UABCharacterAttributeSet*>(TargetASC->GetSet<UABCharacterAttributeSet>()); 게임 로직 만들면서 AttributeSet 의 값을 변경해야 할 경우가 많을 것 같은데요. ASC 에서 변경가능한 AttributeSet 의 참조나 mutable 포인터를 반환하는 함수를 구현하지 않은 이유가 있나요? const_cast 로 억지로 const 를 벗겨내는 게 자연스럽게 느껴지진 않아서요. 다른 곳에서 값을 변경하게 코드를 작성해야 하는 디자인 측면이 있는 건지, 경험적인 정책 측면이 있는 건지 궁금해서 질문 드렸습니다.
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 (게임 프레임워크)
안녕하세요! 아래 코드는 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; } }
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 (게임 프레임워크)
안녕하세요! Activate() 이후 PrimaryComponentTick.SetTickFunctionEnable()이 호출되는데, 이후 GameWorld인지 Owner가 있는지 여부 등을 따져가며 RegisterAllComponentTickFunctions()를 호출할 때도 결국 SetupActorComponentTickFunction()을 통해 인자로 전달된 PrimaryComponentTick의 SetTickFunctionEnable()이 호출됩니다. 왜 이렇게 같은 과정이 굳이 두 번이나 이루어지는지 궁금합니다 물론 두 번째 단계에서는 등록 여부를 확인하여 걸러지지만 실행 조건을 살펴보아도 GameWorld가 아니라는 조건 때문에 두 번 실행될 가능성이 있는 것 같아 질문드립니다. 읽어주셔서 감사드립니다.
안녕하십니까. 1강 2강 4강을 수강한 학생입니다. 다름아니라, 6강에서 NonPlayer의 경우에는 ASC와 AttributeSet을 직접 들고 있는 이유가 궁금해서 질문을 드리게 되었습니다. Player의 경우에는 Owner를 PlayerState로 설정하고 Avatar를 Character로 설정하는 것이 네트워크 멀티 플레이어 환경에서 적합하다고 저번 시간에 학습했는데, NonPlayer는 그렇게 하지 않는 이유가 궁금합니다. 언리얼 엔진에서도 Player State 클래스만 제공해주고 NonPlayer State 클래스는 제공하지 않던데, 이 부분도 멀티 플레이 부분과 연관이 있을까요?
수업내용은 아니 장판 스킬을 만들고싶은데 구상한바로는 액터를 생성하고 capsuleComponent를 붙여서 Overlap이 발생할때 데미지를 주는 방식으로 만들려고하는데요 Collision부분에서 걸리는게 있습니다. 지금 이 장판액터는 몬스터나 플레이어들만 Overlap이 되고 나머지는 무시를 해야하는데요 이러면 장판액터가 바닥에고정되어있지않고 땅으로 꺼지는현상이 발생합니다. PhysicsSimulate를 꺼도 이런현상이 발생합니다 바닥이랑만 Block되게 만드는 방법도 있지만 혹시 다른방법이 있을까요?
안녕하세요. GAS Ability 의 Cooldown GameplayEffect (이하 GE) 를 등록하는 부분에 대해 질문이 있습니다. 먼저 실습을 5.4 버전으로 진행하고 있음을 알립니다. 강의 내용에서는 Cooldown GE 적용 시 Cooldown GE BP 를 생성하여 HasDuration 옵션으로 GameplayTag 를 설정 Cooldown을 적용하려는 GA의 Ability Block Tag 에 Cooldown GE에 설정한 GameplayTag를 추가 위와 같이 진행을 해주셨는데, 5.4에서는 2번 과정이 불필요했습니다. 엔진 코드 내부에서는 CheckCooldown 함수 내부에서 Cooldown GE 의 GrantedTag로 직접 쿨다운 체크를 하는걸로 보입니다. 이 부분이 5.4가 되면서 개선된 부분일까요?