묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[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 VR 콘텐츠 개발하기
탁구프로젝트 암호 알려주세요
탁구프로젝트 8버전 다운받아서 풀려고 보니 암호 있다고 나오는데 암호 알려주세요
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
GTA 프로젝트 질문 - 메타휴먼
안녕하세요 강사님, 강의에 없는 내용인데 강사님은 이 문제를 어떻게 생각하는지에 대해서 질문하려고 합니다. 현재 GTA 모작을 목적으로 프로젝트를 만들고 있고, 캐릭터를 구현해야하는 상황에서 언리얼 5.6에 메인 스트림으로 들어오게된 MetaHuman을 발견했습니다. MetaHuman이 임의로 캐릭터들의 외관을 커스터마이징해주는 툴 정도로 인식하고 있는데 시민들이나 많은 캐릭터가 존재하는 GTA 프로젝트에 적합하다는 생각을 하고 있습니다.MetaHuman을 내 프로젝트에 어떻게 도입할 수 있는지 확실하지 않는 상태에서 유튜브로 강의로 찾아보며 공부를 하고 있는데 아직 관련 정보가 부족하고, MetaHuman을 이용해서 게임을 만든 사례들이 없어서 불확실성에 심적으로 주저하고 있습니다. 이런 상황에서 2가지 질문을 여쭤봅니다.1. GTA 프로젝트에서 메타휴먼을 적용시키는 것에 대한 장단점에 대한 견해가 궁금합니다.2. GTA 프로젝트에 메타휴먼이 적합하다고 생각 하신다면 메타휴먼과 관련된 강의를 추가해줄 수 있을까요?
-
미해결이득우의 언리얼 프로그래밍 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에서만 자꾸 에러가 뜨네요
-
해결됨이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
UPROPERTY() 다음 라인에서 세미콜론이 입력되지 않습니다.
안녕하세요!강의 진도 자체는 이 강좌보다 좀 더 나간 상태인데, UPROPERTY가 현재 강의에서 설명하는 개념이라 여기에 질문을 남겨봅니다.언리얼 5.1과 1강에서 설명하는 세팅을 다 완료한 비주얼 스튜디오 2022를 이용해 공부 중입니다.UPROPERTY()를 입력 후, 다음 라인에 변수를 선언하려 할 때마다 끝에 ;를 입력 시 갑자기 ;가 지워지거나 어떨 때는 변수 이름의 일부가 같이 지워지기도 합니다.테스트를 해 보았을 때 GENERATED_BODY()와 같은 매크로 다음 라인에 변수를 선언해도 똑같은 증상이 있는 것으로 보입니다.다른 라인에 ;를 입력 후 줄바꿈을 지우거나, 혹은 UPROPERTY를 나중에 입력하는 식으로 하면 결과적으론 제대로 입력되지만 영 불편하여 해결법을 찾아보고자 이리저리 찾아봤으나 마땅한 답이 없어서 질문을 드려봅니다.
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
16:44 부분에서 질문이 있습니다.
16:44 코드를 토대로하여 클라이언트를 한명 추가했을 때, 서버쪽에는 서버 자신과 동적으로 추가된 클라이언트인 플레이어컨트롤러의 원본이 있고(둘다 authority), 클라이언트쪽에는 서버 자신이 참여한 형태인, 복제된 simulatedproxy 와 동적으로 추가된 클라이언트의 복사본 autonomousproxy 2개가 있는건가요? 만약 맞다면, 서버에 있는 각각의 serverrotationyaw 속성을 replication하여 클라이언트 각자 소유한 액터의 변경된 속성을 반영하는건가요?
-
해결됨언리얼 엔진 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가 아니라는 조건 때문에 두 번 실행될 가능성이 있는 것 같아 질문드립니다.읽어주셔서 감사드립니다.
-
해결됨언리얼로 만드는 게임사운드 - 중.고급 과정
메타사운드 기초4영상 ladder filter 부분에 질문드립니다
15:29 영상 부분 질문드립니다. random(float)에서 min 700 max 1000으로 설정하셨습니다만 여기서 ladder filter에 있는 cutoff frequency 800값에 연결시켰습니다만 그러면 700 ~ 800 사이 랜덤값이 되는걸까요?
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
12:50 NetMulticast RPC 커넥션 관려하여 질문이 있습니다.
아직까지는 커넥션과 소유권에 대해서 잘 이해하지 못하고 있는 상태이며, 궁금한게 있습니다. 13:07 에서'NetMulticast RPC는 커넥션을 소유하지 않아도 동작한다' 라는 내용이 있는데, 추가적인 정보를 얻어보고자 gpt에 물어보면 자꾸만 '클라이언트와의 커넥션은 필요하지만 소유권이 없어도 된다' 라고 말을 합니다. 그렇다면 gpt가 틀렸다고 보는게 맞을까요? 예를들어 gpt가이 함수는 서버가 호출해야 하고,해당 Actor가 클라이언트에 리플리케이션되어야 하며,해당 클라이언트와 NetConnection이 살아 있어야 전파됩니다.하지만 소유자(Owner)는 없어도 됩니다. 또는 Multicast RPC는 소유권과 무관하게, 그 Actor를 리플리케이션 중인 모든 커넥션에게 전송된다. 라고 이야기를 합니다. 여기서 gpt는 마치 커넥션이 필수인것처럼 이야기하길래, 현재 제가 뭘 놓치고 있는지 궁금하여 여쭤봅니다. 혹시, 강의의 13:07 에서 설명한 '커넥션' 이라는 개념이 'NetConnection 객체 자체' 가 아니라 '소유자 커넥션' 과 밀접한, 예를 들어 '커넥션을 소유하지 읺아도 된다' 라는 설명이 분수대 Actor의 Owner가 특정 클라이언트(PlayerController)가 아니어도 된다는 말로 해석되는 것인가요?
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
부록 공부 굳이 해야 할까요?
부록 공부 굳이 해야 할까요? 부록이 왜 있는건지 잘 이해가 안가요.. 똑같은 내용을 복습하는건가요? 만약에 한번만 공부한다고 하면 Haker님 영상을 참고하는게 좋을까요 아니면 부록 영상을 참고하는게 더 효율적일까요? 다 들으면 60시간이고 Haker님 강의, 부록강의 둘 중에 하나를 배우고 쭉 복습하는게 더 효율적이라는 생각이 들어서요
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 실전편
캐릭터가 달릴 때, 콜리전 박스를 지날때 애니메이션이 튑니다.
안녕하세요. 강의 잘 듣고 있습니다. 캐릭터가 달릴 때, 콜리전 박스를 지날때 애니메이션이 튑니다.제것만 그런줄 알았는데... 강의 자료 영상에도 반복적으로 뛰는 애니메이션이 튀는 구간이 발생하는 게 보입니다. 어떻게 해결해야 할까요?
-
해결됨언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
디폴트로 추가되는 데이터가 존재하지 않아 문의드립니다.
언리얼 5.6 버전으로 깔고 진행하는데 강좌를 보면 콘텐츠 브라우저 / 콘텐츠 폴더에 기본으로 생성 되서 들어가는 데이터가 있는 것 같은데(World, Level, Scene 강좌에서 보여졌던 의자 파티클 이 있는 레벨) 존재하지 않아서 문의 드립니다.
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
[18:50] 패키지 저장 시 이미 패키지가 있으면 로딩을 다 하고 저장하는 것이 좋은 이유가 궁금합니다
안녕하세요!제목에 써둔 것처럼 패키지 저장 시 이미 패키지가 존재한다면 로딩을 다 하고 저장하는 것이 좋다고 말씀하셨는데 그 이유가 안전하게 패키지를 저장할 수 있다고 말씀하셨습니다. 궁금한 것은왜 해당 동작이 안정성을 보장하게 되는지만약 로딩을 안하고 저장 시, 추가적으로 애셋이 저장된다고 볼 수 있는지가 궁금합니다. 감사합니다!
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
HakPawnData 관련 클래스가 에디터에서 문제가 있습니다.
HakPawnData를 상속받은 블루프린트 SimplePawnData를 다른 블루프린트에서 찾을 수 없습니다. 변수 타입은 SimplePawnData으로 설정할 수 있지만 실제 값을 넣으려고 하면 아무것도 안 나옵니다...
-
미해결[입문자를 위한 UE5] Part5. 언리얼 엔진 VR
vr ui 자동으로 뜨게하기ㅠㅠ
begin play 끝에 delay는 연결했는데 3d widget 띄우는 함수가 뭔지 모르겠어요..
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
SimplePawnData가 표시되지 않습니다
Experience Load #2 강의 12:48 부분.라이라 디폴트 익스피리언스에 이폴트 폰 데이터 설정 해야하는데 SimplePawnData가 안 나옵니다. 프로젝트 세팅-에셋매니저에서 뭐 해줘야하나 클론코딩 완료 프로젝트 봤는데 그런거 없던데...
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
github 3-5 파트 프로젝트에서 컴파일 에러가 발생합니다.
(언리얼 버전 5.5, 5.6 로 테스트해본 결과)C7595 스트링 관련 에러인것 같습니다. 무엇이 문제인지 궁금합니다.