묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
Git에서 다운받은 파일중 일부가 에디터에서 인식되지 않습니다.
안녕하세요.저번 강의에서 Git에서 다운받은 ArenaBattle폴더를 새로 만든 프로젝트의 Content폴더로 옮겨 주었을 때, 에디터에서 인식은 했으나 폴더에는 존재하는 Step1이 에디터에서는 나타나지 않는 현상이 있었습니다.이번 강의에서도 진행도중 BluePrint에서 일부 엑터만 에디터에 표시됩니다.무슨 문제가 있는것인가요??현재 언리얼 버전은 5.1 사용중입니다!
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
콤보 어택
수업시간에 배운걸 토대로 콤보 어택마다 데미지를 다르게 구현하고 싶어서 코드를 작성하고 있습니다.float AOLCharacterBase::TakeDamage(float DamageAmount, struct FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) { if (CurrentComboAttack == 1) { Hp = FMath::Clamp(Hp - DamageAmount, 0.0f, MaxHp); // 체력 업데이트 UE_LOG(LogTemp, Warning, TEXT("Damage1 = %f"), DamageAmount); } else if (CurrentComboAttack == 2) { Hp = FMath::Clamp(Hp - DamageAmount*2, 0.0f, MaxHp); // 체력 업데이트 UE_LOG(LogTemp, Warning, TEXT("Damage2 = %f"), DamageAmount*2); } else if (CurrentComboAttack == 3) { Hp = FMath::Clamp(Hp - DamageAmount * 3, 0.0f, MaxHp); // 체력 업데이트 UE_LOG(LogTemp, Warning, TEXT("Damage3 = %f"), DamageAmount * 3); } UE_LOG(LogTemp, Warning, TEXT("Hp = %f"), Hp); // 체력이 0 이하인 경우 if (Hp <= 0.0f) { Dead(); // 죽었으니 함수 호출 UE_LOG(LogTemp, Error, TEXT("Dead!")); } return DamageAmount; }TakeDamage에서 CurrentComboAttack 값에 따라 데미지를 다르게 하려고 위 코드와 같이 작성을 했는데 로그도 전혀 나오지 않습니다. 콤보 어택 데이터에 데미지 값을 추가하여 값을 가져오면 콤보마다 데미지가 다른게 잘 되는데, 위 코드와 같이 작성하면 왜 안되는지 궁금합니다.. CurrentComboAttack은 전역변수로 선언되어있습니다.
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
SetWaitingOnAvatar함수의 호출 위치에 따라 영향을 주는지 궁금합니다.
50:24쯤에 Ability Task의 Activate 함수 작성 구간에서void UABAT_Trace::Activate() { Super::Activate(); SpawnAndInitializeTargetActor(); FinalizeTargetActor(); SetWaitingOnAvatar(); }로 하셨는데void UABAT_Trace::Activate() { Super::Activate(); SetWaitingOnAvatar(); SpawnAndInitializeTargetActor(); FinalizeTargetActor(); }이렇게 SetWaitingOnAvatar함수를 먼저 Task수행전에 호출해도 괜찮은지 궁금합니다.SetWaitingOnAvatar 함수를 호출이유가 해당 작업이 아직 안끝났다는걸 ASC에게 알려주기 위해 Waiting상태로 만든다고 들어서 이게 가능하다 생각되고 실제로도 돌려보니 별 다른점이 없어서 물어봅니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
exercise_A 번 문제 해결방법에 대한 질문.
디버깅 참고 답안의 exercise_A 번 문제에서 knight (Knignt*형) 의 포인터 주소를 넘겨주는 이중포인터로 작성해서 해결?(일단 터지지는 않았습니다) 했는데 이런 방법은 안되는 건가요?
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
2강 보고 요약 정리해봤는데 검토 부탁드립니다.
ASC_Actor : ASC 부착된 액터.GA : ASC_Actor 가 아닌 이곳에서 기능을 구현. Tag : ASC_Actor 와 GA의 연결다리 (의존성 약화) [ Tag 사용법 ]<1> 공용 Tag 헤더파일 선언. (ASC_Actor , GA 모두 보유) ㄴ 두 태그를 정의함 ( 1.기본태그 2.활성화 유무확인 태그)<2> " FGameplayTagContainer 생성자(기본태그) " 로 태그객체를 만듬.<3> TryActivateAbilitiyByTag(태그객체) 다음과 같이 호출해 2번 태그가 부착되는 동시에 기능이 돌아감.
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
본 별로 레이어로 블렌딩할 때
본 별로 레이어로 블렌딩 합니다 노드에Base Pose에는 Main States 포즈를 넣어주는 것을 알겠는데Default Slot 슬롯에는 왜 소스 포즈로 Main States가 연결되어야 하나요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
지역변수와 관련해서 궁금한점이 있습니다
// 예시 1 : 지역변수를 함수 내에서 선언하고 사용 void ASample::Tick(float DeltaTime) { Super::Tick(DeltaTime); FVector Direction = GetActorLocation(); } ------------------------------------- // 예시 2 : 헤더파일에서 FVector Direction 선언 void ASample::Tick(float DeltaTime) { Direction = GetActorLocation(); } ```프로그래밍에 익숙하지 않아 궁금한 내용을 질문드립니다.반복해서 호출되는 경우, 이렇게 지역변수 안에 선언하는 것과, 헤더파일에서 선언하고 함수 내에서는 값만 대입하는것. 두 방법간에 비용(성능) 차이가 나나요? 두 방식이 섞여서 사용되는것 같아서 질문드립니다 (해당 변수의 사용은 지역변수 안에서만 사용한다고 가정)
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
Root 컴포넌트와 기즈모
안녕하세요2-3강 '게임플레이 프레임워크' 에 7분15초 부분에서 Body를 DefaultSceneRoot 로 끌어다 놓는 부분이 있는데요, 이렇게 해보니 Body에서 보이던 기즈모가 안보이게 되고 우측 상단에서 마우스로 직접 기즈모를 클릭해도 적용이 안되더라구요.혹시 이유가 무엇인지 알 수 있을까요? 메쉬 그 자체는 Root컴포넌트가 되면 기즈모로 조절이 불가능해지니 앞으로는 피해야 하나요? * 강의 후반부에 다시 DefaultSceneRoot 생성하는거 뒤늦게 확인했습니다!
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
Gameplayability vs Gameplaycue
여러 계산식(방향 , 상태 체크 )이 들어간 hitreaction을 구현하려고 합니다. Gameplayability 과 Gameplaycue 중 어느 구현방식이 최적화와 서버 비용 절감에 도움이 될까요? GameplayAbility로 계산식을 구현하고 ability안에서 cue를 사용해 애니메이션을 실행시키는게 좋을까요? 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
27분에서 헤더 파일에서 #include 이유
헤더에서 상호 참조 또는 컴파일이 오래걸리는 것을 방지하려고 class로 전방선언하여 작업하는 것으로 이해하고 따라하고있는데, 여기서는 헤더에서 클래스를 include하여 작업하는 이유는 무엇일까요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
[강의명: virtual 소멸자] 자식 클래스의 소멸자에도 virtual 을 붙이시는 이유가 궁금합니다
#include <iostream> using namespace std; class Player { public: Player() { cout << "Player()" << endl; } virtual ~Player() { cout << "~Player()" << endl; } }; class Pet { }; class Archer : public Player { public: Archer() { cout << "Archer()" << endl; _pet = new Pet(); } virtual ~Archer() { cout << "~Archer()" << endl; delete _pet; } public: Pet* _pet; }; int main() { Player* archer = new Archer(); delete archer; } 영상 내용에서 자식클래스의 소멸자에도 virtual 을 붙이셨는데 부모 클래스의 소멸자에만 붙여도 자식 클래스의 소멸자가 잘 호출이 됩니다. 그래서 GPT를 통해 둘 다 붙이는게 좋은지 부모 클래스에만 붙이는게 좋은지 질문해봤는데 부모 클래스에만 붙여도 문제가 없다고 답변을 받았습니다. 근데 루키스님께서 둘 다 붙이는 이유가 분명 있으실탠데 그 이유가 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
캐릭터가 갑자기 안 움직입니다ㅜ
#include "InputMappingContext.h" #include "EnhancedInputComponent.h" #include "EnhancedInputSubsystems.h" void ACharacterPlayer::BeginPlay() { Super::BeginPlay(); APlayerController* PlayerController = CastChecked<APlayerController>(GetController()); if (PlayerController) { if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController->GetLocalPlayer())) { Subsystem->AddMappingContext(DefaultMappingContext, 0); } } } // Called to bind functionality to input void ACharacterPlayer::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); UEnhancedInputComponent* EnhancedInputComponent = CastChecked<UEnhancedInputComponent>(PlayerInputComponent); EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Triggered, this, &ACharacter::Jump); EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Completed, this, &ACharacter::StopJumping); EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &ALCharacterPlayer::Move); EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &ACharacterPlayer::Look); EnhancedInputComponent->BindAction(AttackAction, ETriggerEvent::Triggered, this, &ACharacterPlayer::Attack); } void ACharacterPlayer::Move(const FInputActionValue& Value) { FVector2D MovementVector = Value.Get<FVector2D>(); const FRotator Rotation = Controller->GetControlRotation(); const FRotator YawRotation(0, Rotation.Yaw, 0); const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X); const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y); AddMovementInput(ForwardDirection, MovementVector.X); AddMovementInput(RightDirection, MovementVector.Y); } void ACharacterPlayer::Look(const FInputActionValue& Value) { FVector2D LookVector = Value.Get<FVector2D>(); AddControllerYawInput(LookVector.X); AddControllerPitchInput(LookVector.Y); }코드는 위와 같이 작성을 했습니다. 화요일까지 움직였는데 갑자기 안 움직입니다. 플러그인도 있고, IMC에도 다 설정을 했는데 갑자기 안 움직입니다... 구글에서 찾아봐도 해결이 안됩니다ㅜㅜ...ThirdPersonCharacter 를 추가해서 이 캐릭터를 사용하니 움직입니다. 그래서 ThirdPersonCharacter 의 부모 클래스를 제가 만든 클래스로 설정을 하니 다시 안 움직입니다. 코드 문제인 거 같은데 뭐가 문제인걸까요..
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
패키징에 관한 질문입니다
UATHelper: Packaging (Windows): Running AutomationTool...UATHelper: Packaging (Windows): Using bundled DotNet SDK version: 6.0.302UATHelper: Packaging (Windows): Starting AutomationTool...UATHelper: Packaging (Windows): Parsing command line: -ScriptsForProject=D:/UnrealGame/Test/Test.uproject Turnkey -command=VerifySdk -platform=Win64 -UpdateIfNeeded -EditorIO -EditorIOPort=64148 -project=D:/UnrealGame/Test/Test.uproject BuildCookRun -nop4 -utf8output -nocompileeditor -skipbuildeditor -cook -project=D:/UnrealGame/Test/Test.uproject -target=Test -unrealexe="C:\Program Files\Epic Games\UE_5.4\Engine\Binaries\Win64\UnrealEditor-Cmd.exe" -platform=Win64 -installed -stage -archive -package -build -clean -pak -iostore -compressed -prereqs -archivedirectory=D:/UnrealGame/Test/package -clientconfig=Shipping -nodebuginfo -nocompile -nocompileuatUATHelper: Packaging (Windows): Initializing script modules...UATHelper: Packaging (Windows): Total script module initialization time: 0.30 s.UATHelper: Packaging (Windows): Using C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exeUATHelper: Packaging (Windows): Executing commands...UATHelper: Packaging (Windows): Installed Sdk validity:UATHelper: Packaging (Windows): Win64: (Status=Valid, MinAllowed_Sdk=10.0.18362.0, MaxAllowed_Sdk=10.9.99999.0, Current_Sdk=10.0.22621.0, Allowed_AutoSdk=10.0.19041.0, Current_AutoSdk=, Flags="InstalledSdk_ValidVersionExists")UATHelper: Packaging (Windows): Scanning for envvar changes...UATHelper: Packaging (Windows): ... done! UATHelper: Packaging (Windows): Cleaning Temp Paths...UATHelper: Packaging (Windows): BUILD SUCCESSFULUATHelper: Packaging (Windows): Setting up ProjectParams for D:\UnrealGame\Test\Test.uprojectUATHelper: Packaging (Windows): ********** BUILD COMMAND STARTED **********UATHelper: Packaging (Windows): Running: C:\Program Files\Epic Games\UE_5.4\Engine\Binaries\ThirdParty\DotNet\6.0.302\windows\dotnet.exe "C:\Program Files\Epic Games\UE_5.4\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" Test Win64 Shipping -Project="D:\UnrealGame\Test\Test.uproject" -Clean -NoHotReload "D:\UnrealGame\Test\Test.uproject" -NoUBTMakefiles -remoteini="D:\UnrealGame\Test" -skipdeploy -log="C:\Users\user\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_5.4\UBA-Test-Win64-Shipping.txt"UATHelper: Packaging (Windows): Log file: C:\Users\user\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_5.4\UBA-Test-Win64-Shipping.txtUATHelper: Packaging (Windows): No target name was specified on the command-line.UATHelper: Packaging (Windows): Took 0.30s to run dotnet.exe, ExitCode=6UATHelper: Packaging (Windows): UnrealBuildTool failed. See log for more details. (C:\Users\user\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_5.4\UBA-Test-Win64-Shipping.txt)UATHelper: Packaging (Windows): AutomationTool executed for 0h 0m 2sUATHelper: Packaging (Windows): AutomationTool exiting with ExitCode=6 (6)UATHelper: Packaging (Windows): BUILD FAILEDPackagingResults: Error: Unknown Error 패키징이 안되는데 무슨 문제일까요???
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
콤보 애니메이션 몽타주의 MontageJumpToSection에 대하여
안녕하세요. 하나의 콤보 애니메이션 몽타주에서 섹션으로 점프하는 방식으로 강의 내용이 진행되고 있는데요. 강의 프로젝트 재확인하는 느낌으로 개인 프로젝트를 조금씩 진행하고 있는 중 콤보 공격을 넣기 위해 강의 내용따라 애니메이션 몽타주를 만들었습니다. JumpToSection 을 사용하게 되면 애님 몽타주 내부에서 해당 지점으로 바로 점프해버리다보니 점프 직전 프레임과 이후 프레임간의 모션 차이가 클 경우 상당히 눈에 띄더라구요. 그래서 각 콤보 공격의 단계를 개별 애니메이션 몽타주로 제작하고 다음 콤보 입력시 개별 애니메이션 몽타주 재생을 해봤는데 이 경우는 애니메이션 블렌딩이 되어 자연스럽게 이어지는것 처럼 보였습니다. 여기서 질문인데, JumpToSection 이 직전/직후 프레임간의 애니메이션 블렌딩이 불가능하다면 실제 프로젝트에서는 어떤 상황에서 사용하게 되는지 궁금합니다. 감사합니다.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
PossessedBy() 함수는 싱글플레이에서는 호출되지 않나요?
PossessedBy 함수가 서버에서만 호출된다면, 싱글플레이용 게임에서는 어느 위치에서 Character 의 ASC 에 PlayerState 의 ASC 를 대입하는게 적절할지 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
SetTimer
안녕하세요. 혼자 게임을 만들어보다가 타이머 함수에 대해 궁금한게 생겨 질문을 드립니다.SetTimer(FTimerHandle& InOutHandle, UserClass* InObj, typename FTimerDelegate::TMethodPtr< UserClass > InTimerMethod, float InRate, bool InbLoop = false, float InFirstDelay = -1.f)SetTimer 함수의 인자를 살펴보면 InFirstDelay라고 있는데 이건 무슨 변수인가요?구글에서 찾아보니 최초 실행 시 대기 시간이라고 하던데 만약 2로 설정되어 있다면 2초 뒤에 타이머가 실행이 된다는 소리인가요?
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
Scene과 SceneManager 강의 수강 중 키보드 입력 오류
Scene과 SceneManager 강의 수강 중 키보드 입력 오류가 있어서 문의드리게 되었습니다.DevScene의 Update()에서 키보드 입력을 받을 때 강의와 똑같이 코드를 입력했음에도 불구하고콘솔창에서는 한쪽 방향으로만 오브젝트가 움직입니다. (만약 A를 입력하면 A로만 움직임.)혹시 원인이 뭔지 알 수 있을까요?
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
Window API 강의 수강 중 LARGE_INTEGER 타입 변환 오류
안녕하세요!10주차의 Window API 강의를 듣던 중 TimeManager.cpp에서 QueryPerformanceFrequency와 QueryPerformanceCounter메서드에 LARGE_INTEGER 타입으로 변환해서 인자를 넘겨주는 과정에서 오류가 있었는데 해결 과정을 문의하고 싶습니다. Types.h에 문제가 있을까 싶어서 찾아봤지만, 별다른 이상이 없어서 원인을 모르겠습니다.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
CommitAbility 함수 관련 질문
안녕하세요 교수님.5.4.4 버전으로 강의를 듣고 있는데, 계속해서 Cost 옵션과 CoolDown이 적용되지 않아 이것저것 찾아보다가 ActivateAbility부분에 해당 코드가 있는것을 발견했습니다.if (!CommitAbility(Handle, ActorInfo, ActivationInfo)) { EndAbility(Handle, ActorInfo, ActivationInfo, false, true); return; }해당 코드를 넣고 난 후 정상적으로 cost와 cooldown이 적용되었습니다.해당 함수는 어떤 기능을 하는 함수인지 궁금합니다.
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
새 리타겟 포즈 생성이 안됩니다.
20:27 에서 뉴 포즈 생성에 성공하신분 계신가요?