묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
스테이트 머신으로 Locomotion 제작 영상 질문드립니다.
17:15 부분에서 스피드 값을 3으로 설정하셨습니다만 뛰는모션이 나올려면 3보다 커야지 모션이 나온다는 소리일까요? 3보다 낮으면 그냥 걷는모션이 나오는 방식이고요? 제가 맞게 이해했는지 검증받고싶습니다
-
미해결[LV3 : 기술편] 게임스킬 만들기 - 기획, 아트 누구나 만드는 블루프린트
섹션5_25 조건 And, Or에서
1:22초 쯤 스킵이 된거 같은데TargetActor는 어떻게 만드는건가요?5:22초에GrabSucceed 커스텀 이벤트에서나오는 애 같은데전 이렇게만 떠요 ㅜㅜ커스텀 이벤트에서 변수를 만드는게 아닌건가요?이것때문에 막혔습니다 ㅜ
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
애니메이션 블루프린트 AnimGraph 내부 Land State 질문
안녕하세요애니메이션 블루프린트의 AnimGraph > MainStateMachine > Land(State) 에서요Apply Additive 를 사용하지않고 그냥WarriorLand 애니메이션을 연결하고 플레이해보았습니다플레이 시 움직임등 잘되고 점프하고 착지 Land State 시점에 캐릭터가 사라져 버리는데 딱 이부분만 바뀌었을뿐인데 왜그런지 모르겠습니다 ㅠㅠ
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
후속 강의 언제나오나요??
GTA모작 너무 기대됩니다. 여름 방학 시즌에 딱 맞춰서 수강할 수 있다면 참 좋을 것 같은데...
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
분수대에서 워터 위치까지 해주시는데
Water->SetupAttachment(Body);워터는 여기 까지만 하고해당 클래스를 상속받는 블루프린트에서세부적인 위치를 세팅해주는것도 괜찮을까요?이 질문을 하게된게 비주얼적으로 보면서 세팅하면 좋을거같다는 생각이 들었습니다업계에선 해당 방식으로 하는지도 궁금합니다
-
미해결[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
강의 자료 다운로드해서 실행시 공격을 해도 HpBar가 줄어들지 않습니다!
자료 다운로드하고 아무것도 안건들이고 플레이하면 공격을 해도 HpBar 빨간색이 줄어들지 않습니다! 다시 해보려고 HpRatio 변수를 만들고 컴파일을 했음에도 불구하고 Bind 목록에 뜨지를 않습니다!
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
34:44 SpawnActorDeferred 질문입니다.
FinishSpawning 이전에 StatComponent는 아직 생성자만 호출한 상태이며, InitializeComponent 호출을 하지 않았고, NonPlayer 의 경우엔 아직 PostInitializeComponent 를 호출하지 않은 상태인데, 그렇다면 Stat 이라는 이름의 StatComponent를 아직 사용하기엔 위험하다고 볼 수 없는 건가요?SetLevel 함수 내부에 Stat 을 참조하여 Stat-> 을 하고 있는데, PostInitializeComponent 같은 것을 아직 실행하지 않은 상태에서도 이렇게 참조해도 아무런 문제가 발생하지 않는 것인가요?
-
미해결[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
UI가 유닛 스프라이트에 가려집니다.
강의 영상을 보면 UI가 캐릭터 스프라이트 위에 뜨는데 저는 위의 사진처럼 스프라이트에 UI가 가려집니다.혹시 어떤 설정을 빼먹어서 그런 것인지 알 수 있을까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
혹시 GetOwningPlayerPawn() 문제가 현재 해결되었나요?
간만에 강의코드를 다시 필요한 부분만 복습중인데, 기억이 가물하긴 한데 OwningActor 를 따로 변수로 둔 이유가 WidgetComponent 에서 InitWidget 내부에서 자체적으로 CreateWidget을 하여 만들어진 HpBar 위젯의 플레이어컨트롤러를 오버라이드된 NativeConstruct() 부분에서 제대로 가져올 수 없어서인 것으로 알고 있습니다.근데 현재 코드에서 지금 당장 GetOwningPlayerPawn() 을 했을 때 정상적으로 참조하여 값을 제대로 가져오는 것 같은데, 그렇다면 더이상 굳이 OwningActor 를 별도로 저장할 필요가 없게 되었다고 볼수 있는 것인가요?
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
AnimNotify를 GA에서 받는방법이 있을까요?
AnimNotify신호를 GA의 함수로 받고싶은데 방법이있을까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
Montage_JumpToSection 미호출 문제
안녕하세요. 이득우 선생님. 늘 좋은 강의 감사드립니다.다름이 아니라 제가 저만의 프로젝트를 제작하며 해당 강의를 복습중에 이해가 안되는 부분이있어서, 하루종일 헤메다가 질문드립니다...ㅠㅠ현재 ABAComboAttack의 Data중 EffectiveFrameCount으로 설정한 프레임 이전에 입력이 발생하면, 해당 시점에 Montage_JumpToSection으로 다음 섹션으로 넘겨주는 구조로 이해했습니다. 다만 궁금한 점은, 수업 예제에서 첫 번째 콤보 공격 애니메이션의 총 프레임, 즉 애니메이션 전체 길이에 해당하는 프레임이 44프레임인것으로 보이는데, (사진 참조)제가 이해한것을 바탕으로 생각했을때는, 첫 번째 EffectiveFrameCount는 44이하이기만 하면 상관없다고 생각했고, 약간의 계산 오차를 생각했을때도, 적어도 40이하에서는 안전하게 동작할것이라 예상했습니다.하지만 예상과 달리 36이상의 값 부터는 문제가 됐습니다. 아무리 연타를 해도 두 번째 콤보 공격이 등장하지 않습니다. 해당 부분 로그를 찍어 디버깅 해보니, Montage_JumpToSection 함수 내부의 GetActiveInstanceForMontage라는 함수에서 인자로 받아온 몽타주가 현재 실행중인 몽타주 인스턴스 목록, 즉 ActiveMontagesMap내부에 존재하는지 찾고, 존재하면 해당 섹션으로 이동하도록 되어있는데, 이 부분에서 계속 찾지 못하고 있었습니다. 결론적으로, 1번 섹션이 끝나기 이전에 이미 ActiveMontagesMap에서는 몽타주 인스턴스가 사라져 있었습니다.이것이 첫 번째 콤보 공격 애니메이션인 WarriorAttack1 에서 EffectiveFrameCount값이 35이하 일 때는 Montage_JumpToSection 호출 시점에 존재하고 있고, 36이상의 값에서는 존재하지 않는것이 문제였습니다. 혹시나, 계산 문제일 수도 있겠다 생각하여void AABCharacterBase::SetComboCheckTimer() { int32 ComboIndex = CurrentCombo - 1; ensure(ComboActionData->EffectiveFrameCount.IsValidIndex(ComboIndex)); const float AttackSpeedRate = 1.0f; float ComboEffectiveTime = (ComboActionData->EffectiveFrameCount[ComboIndex] / ComboActionData->FrameRate) / AttackSpeedRate; /*Test Code*/ float SectionStart = ComboActionMontage->CompositeSections[ComboIndex].GetTime(); int NextIndex = FMath::Clamp(ComboIndex + 1, 0, ComboActionData->MaxComboCount - 1); float SectionNext = ComboActionMontage->CompositeSections[NextIndex].GetTime(); float Length = SectionNext - SectionStart; /*************/ UE_LOG(LogTemp, Warning, TEXT("Section Length : %f, EffectiveTime : %f"), Length, ComboEffectiveTime); if (ComboEffectiveTime > 0.0f) { GetWorld()->GetTimerManager().SetTimer(ComboTimerHandle, this, &AABCharacterBase::ComboCheck, ComboEffectiveTime, false); } } void AABCharacterBase::ComboCheck() { ComboTimerHandle.Invalidate(); if (HasNextComboCommand) { UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance(); CurrentCombo = FMath::Clamp(CurrentCombo + 1, 1, ComboActionData->MaxComboCount); FName NextSection = *FString::Printf(TEXT("%s%d"), *ComboActionData->MontageSectionNamePrefix, CurrentCombo); /*Test Code*/ if(AnimInstance->Montage_IsPlaying(ComboActionMontage)) { UE_LOG(LogTemp, Warning, TEXT("Montage Is Playing")); } else { UE_LOG(LogTemp, Warning, TEXT("Montage Not Playing")); } /*************/ AnimInstance->Montage_JumpToSection(NextSection, ComboActionMontage); SetComboCheckTimer(); HasNextComboCommand = false; } }위와 같이 테스트 코드를 넣어서 로그도 점검해 봤지만,계산에는 이상이 없는것으로 보였습니다....서론이 너무 길었는데, 제가 궁금한점은 몽타주가 종료되지 않았음에도 불구하고 ActiveMontagesMap에서 몽타주 인스턴스가 삭제될 수 있는건지, 만약 그럴 수 있다면 현재 상황에서는 왜 삭제되는것인지 궁금합니다.긴글 읽어주셔서 감사합니다.
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 실전편
블루프린트 부분 질문드립니다.
안녕하세요 강의 2분 부분쯤 BP_ThirdPerxosnCharater 부분이 강사님의 내용과 다르게나와서 혹시 어떤게 문제인지 알 수 있을까요?
-
미해결[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
언리얼도 Sprite Editor 가 있나요?
안녕하세요유니티에서는 아틀라스에서슬라이스 한다음 한장당 이름을 따로 부여하고피봇, 사이즈 등 세팅하는 기능이 있었는데그냥 궁금해서 질문드려요
-
미해결[입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트
블프 에디터 사용 관련해서 질문있어요
혹시 블루프린트 창 내이벤트 그래프 / 뷰포트 창이 있잖아요?단축키로 최대화 <-> 원상태로 토글 관련 단축키가 있을까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
비동기 로딩 질문 드립니다.
안녕하세요. 유익한 강의 감사합니다. TSoftObjectPtr 통한 약참조된 객체의 경우 비동기 로딩 코드 문의 드립니다. UABWeaponItemData* WeaponItemData = Cast<UABWeaponItemData>(InItemData);if (WeaponItemData){if (WeaponItemData->WeaponMesh.IsPending()){WeaponItemData->WeaponMesh.LoadSynchronous();}Weapon->SetSkeletalMesh(WeaponItemData->WeaponMesh.Get());} 위에 것이 원래 코드인데, 소프트 참조를 적극 활용할 경우, 런타임에 지연된 로딩을 많이 사용하게 되면 hitch 가 많이 발생할까 싶어 비동기로딩 방법을 찾아보았습니다 ( 제가 짠 건 아니고, 코파일럿 도움 ) if (WeaponItemData->WeaponMesh.IsPending()){// 비동기 로드 시작WeaponItemData->WeaponMesh.LoadAsync([this](UObject* LoadedObject){// 로드 완료 후 처리USkeletalMesh* LoadedMesh = Cast<USkeletalMesh>(LoadedObject);if (LoadedMesh){Weapon->SetSkeletalMesh(LoadedMesh);}});}else{// 이미 로드된 경우 바로 설정Weapon->SetSkeletalMesh(WeaponItemData->WeaponMesh.Get());}언리얼이 내부적으로 LoadAsync 를 처리하는 방법까지 분석해보진 못했습니다만,여러 틱에 나눠 시분할로 나눠서 로딩하는 방법인가? 짐작만 하고 있습니다.이런 경우 비동기 로딩을 하는 게 일반적으로 더 나은 방법일 지 문의 드립니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
스택 empty
안녕하세요stack empty 함수에 return size() > 0으로 하게되면 비어있으면 false가 나올텐데 의미가 반대로 사용된 것 아닌가요??🙃
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
컴보 입력 타이밍 계산 공식에 포함되는 계수 질문
안녕하세요. 컴보키 입력을 위한 시간 계산할 때, Effect Frame Count 를 아래와 같이 입력하셨는데요. 각 Section 에서 컴보 공격(마우스 좌클릭) 입력을 받을 수 있는 시간을 계산하기 위해Section 에서 입력을 받을 수 있는 마지막 Frame 값을 넣으신 것으로 생각했습니다.강의 영상에서는 임의로 넣으신 것처럼 보이는데요. 실제 Frame 은 각 섹션 애니메이션 클립의 최대 Frame 카운트 개수를 넘어가면 안되는 것이겠지요?그리고 각 애니메이션의 최대 Frame 개수는 어떻게 확인할 수 있을까요?애니메이션 시퀀스 파일에서 아래와 같이 확인하면 되나요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
5.4버전 블랙보드 AttackInRange의 이름 변경이 안됩니다.
언리얼엔진 5.4버전을 사용하며 따라하면서30:00경 Selector의 데코레이터로AttackInRange를 추가 후 NodeName = TEXT("CanAttack");을 하였지만, 블루프린트 내에서는 정상적으로 변경이 안되는 이슈가 있습니다.찾아본 결과, 5.1버전 이후는 헤더에서 UCLASS(DisplayName = "블루프린트 내 표시명")이런식으로 작성해야 블루프린트 내에서 정상적으로 설정한 이름으로 보이고, 보인 이름을 눌러서 추가하면, NodeName으로 설정한 이름이 표시가 되는데요.이의 경우에도 기존에 만약 AttackInRange를 추가한 상태이면 ATtackInRange의 이름이 변경이 되진 않습니다. 혹시 제가 놓친 부분이 있거나 실수한 부분 때문에 이런 이슈가 생겼는지 확인차 질문 드립니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
섹션4 배열실습 질문입니다.
배열을 통해 콘솔에 5x5 맵을 표현하는 부분에서 while (true) {HANDLE output = ::GetStdHandle(STD_OUTPUT_HANDLE);COORD pos = { 0, 0 };::SetConsoleCursorPosition(output, pos); for (int y = 0; y < MAP_SIZE; y++) { for (int x = 0; x < MAP_SIZE; x++) { switch (GMap2D[y][x]) { case 0: cout << " □ "; break; case 1: cout << " ■ "; break; case 2: cout << " ● "; break; } } cout << endl; } }위와 같이 메인에 함수에 축약해서 코드를 짜놓았습니다. (실제로 헤더와 추가 cpp에서 도는것을 질문하기 쉽게 축약한것이라 실제 구동에는 차이가 없는것 같습니다.)위 코드에서 궁금한 부분이 2가지 생겼습니다.위 부분에서 while true로 돌고 있는데 무엇때문에 한번만 출력되는지 궁금합니다.위 코드를 작성하게 되면 다른 코드를 작성했을 때 콘솔창에 나타나는 "~~~~ 코드와 함게 종료되었습니다.... ~~~ 이 창을 닫으려면 아무 키나 누르세요.." 와 같은 프로그램의 끝을 알리는 자동 구문도 안뜨더군요.위 두 가지가 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
3강 질문 있습니다.
여기서 주석 처리한 부분들을 활성화 시키면 테스트 하자마자 튕깁니다..코드를 잘못 작성했나 생각하여 선생님의 코드를 복사 붙여넣기로 옮겼는데도 튕겨서 질문 남깁니다.