뷰포트에서 화면이 아래 위로 밖에 안움직입니다
미해결
이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
움직임도 잘되고 v키를 눌러 시점 전환도 잘되는데 마우스가 오른쪽이나 왼쪽으로 가면 화면이 그쪽으로 돌아가지 않고 아래 위로만 회전합니다 혹시 마우스 관련 설정이 잘못된걸까요?
- unreal-engine
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
움직임도 잘되고 v키를 눌러 시점 전환도 잘되는데 마우스가 오른쪽이나 왼쪽으로 가면 화면이 그쪽으로 돌아가지 않고 아래 위로만 회전합니다 혹시 마우스 관련 설정이 잘못된걸까요?
미해결
이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
앞서 만든 코드에서는 OnGameClearCpp, OnGameOverCpp 이름으로 나오도록 했는데 미리 만드신것에선 이름을 다르게 지으신건가요? OnGameClear, OnGameOver 이름이 다르길래 질문드립니다. +수정 강의 뒤에 내용을 듣다보니 OnGameClearCpp, OnGameOverCpp 도 가져와 연결시켜주네요.. 미리만들어진것말고 제가 직접 만들어보고 있는데 저노드가 안보이는데 어떻게 추가를하면 될까요?
미해결
이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
해당 코드에서 UPROPERTY() TObjectPtr<class UCard> Card; 컴포지션을 사용한 Card와 UPROPERTY() UCard* Card = NewObject<UCard>(); 동적으로 생성한 Card의 정확한 차이와 구분을 모르겠습니다. 어떻게 구분해서 사용해야 할까요?
해결됨
[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
플레이하면 정상작동되고 몬스터를 한대라도치면 HP가 안달고 esc로 종료하면 해당 메시지가 뜹니다. 이 메세지는 왜 뜨는 건가요 ~?
미해결
이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
안녕하세요 1강 23:03 에서 강의 영상에서는 Ctrl+Alt+F11을 눌러 에디터 빌드를 완료를 하면 Default Pawn Class가 바로 ThridPersonCharacter로 변경이 되는데, 제 컴퓨터에서는 바로 변경이 되지 않습니다. cpp의 생성자 부분만 변경했음에도, 에디터를 끈 후 비주얼스튜디오에서 빌드를 한 후 다시 에디터를 실행해야 변경된 것이 확인되는데 왜 그럴까요? 제가 놓친 설정이나 빌드 방법이 있는지 궁금합니다.
미해결
이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
안녕하세요 3강까지 수강 잘하고 있는 김동현 학생입니다. 한가지 질문이 있습니다. cpp파일만 수정했을 경우 언리얼에서 (Ctrl+Alt+F11)단축키로 Live Coding으로 컴파일 하면 된다고 하셨었는데, 이렇게 했을 경우 수정된 부분에 대한 LogTemp가 보여지지 않고 아예 에디터를 종료후, 비주얼스튜디오에서 컴파일 해야 수정된 부분까지 출력되는데 어떻게 해야 문제를 해결할 수 있을까요?
미해결
이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
안녕하세요 이득우님. 이전에 다른분이 남겨주신 내용과 위치가 같은데요, 380번째줄, void AABCharacterPlayer::ServerRPCAttack_Implementation(float AttackStartTime) 함수에 대한 질문이 있습니다. 수업을 위해서 401번째줄에 if(!PlayerController->IsLocalController()) 조건문을 넣어주신것 같아보이긴 하는데, 사실 엄밀하게는, 이 조건문은 아예 없어도 전혀 문제되지 않는 로직이라고 생각되는데 제가 잘못 생각한걸까요? 좀 찝찝하기도 해서, 혹시 제가 놓친게 있나 싶어서 질문 남깁니다. 위 조건문이 없어도 되는 이유는, 해당 로직이 있는 곳은 클라이언트에서는 절대 동작할 수 없는 Server RPC 함수 내부 코드이며, 그렇기 때문에 서버에서만 동작하는 상태가 보장되고, 추가로 서버에 있는 모든 PlayerController는 서버 클라이언트 서버 모델에서 항상 IsLocalController가 false가 되기 때문이라고 생각하였습니다. 다른분의 질문에서 올려주신 IsLocalController 함수는 AController의 함수로 올려주셨는데, 저희가 사용하는 Controller는 현재 형변환에 의해 PlayerController이고, 언리얼에서 함수 호출을 살펴보면, PlayerController의 IsLocalController이 호출되는것 같습니다. 그래서 위의 로직에서 if (NetMode == NM_DedicatedServer) return false; 에 의해 false가 항상 반환될거 같은데, 혹시 제가 놓친 부분이 있을까요? => 혼자 고민을 이것저것 해보고 테스트 해보면서, 아마도 이렇게 해주신 이유는 Listen 서버이기 때문에 그런것 같네요. 리슨서버에서는 리슨서버의 PlayerController가 bIsLocalPlayerController가 true가 나오더군요. 그럼에도 불구하고, 일반적으로 데디케이티드 서버 환경에서는 리슨서버를 생각하지 않기 때문에 위 조건문은 필요없을것으로 생각됩니다. 게임 환경을 Client로 바꿔서 사용하였을때를 생각해보았습니다. 그리고 추가로 질문이 하나 더 있습니다. 강의에서 Multicast 방식을 각각의 Controller에 대해 Client RPC를 사용해주면서 네트워크 최적화를 설명하신것에 대해서, 저는 이 부분을 멀티캐스트 하나를 사용하는것과 월드 내에 모든 클라이언트에 해당하는 Controller에게 직접 Client RPC를 직접 각각 호출해주는게 좀더 네트워크 성능상 좋다, 라고 이해했는데, 이 부분은 제가 올바르게 이해한게 맞을까요? 언제나 좋은 강의 해주시고, 질문도 꼼꼼하게 달아주셔서 감사드립니다(_ _)
미해결
이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
게임모드에 언리얼에서 제공하는 3인칭 템플릿 캐릭터 에셋을 디폴트 폰 클래스로 지정할 때 ConstructorHelpers::FClassFinder 함수에 템플릿으로 APawn을 지정해주셨는데 캐릭터는 폰을 상속받은 클래스인데 ACharacter로 지정하면 안되는 이유가 있나요? 해보니깐 컴파일 오류가 나던데요 ACharacter로 클래스를 찾아야 오히려 더 명확하게 찾는게 아닌가 싶어서 질문드립니다.
미해결
이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
안녕하세요 언리얼 엔진 5 를 공부중인데 저는 라이브 코딩이 잘 되지 않아서 그냥 라이브 코딩을 unable 한 상태로 쓰고 있습니다. net 이나 community 에서도 종종 같은 문제를 겪는 분들이 있던대 다들 해결방법을 찾으시진 못한 것 같더라구요 json file 을 parsing 할 때 뭔가 문제가 생기는 것 같은데 혹시 같은 문제를 경험해보셨거나 해결방법을 아시는지 궁금합니다 . 강의 감사합니다.
미해결
[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
언리얼엔진으로 만든 MMORPG 2D는 뭐가 있나요?
해결됨
[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
강의를 다 보고 개인 포트폴리오를 준비하고 있는데 프로젝트의 파일 크기가 너무 커서 git에 push 가 안되고 있습니다. 에러코드는 이렇습니다. error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500 해결방법으로 git config --global https.version HTTP/1.1 git config --global http.postBuffer 157286400 명령어로 HTTP 버전변경이나 버퍼 크기를 늘려보라는 답이 나와서 해봤는데 다 안먹히더라구요 그러면 그냥 push할 파일의 크기가 커서 그렇다고하는데 이럴때 어떻게 버전관리를 하시나요? 그냥 로컬에서만 하는것으로는 나중에 포트폴리오 제출할때 불편할것 같아요 두번째 궁금한것은 언리얼엔진과 C++의 연동입니다. 파트.4 가 그에 관한 내용이라고 들었는데 아직 안나왔더라구요 그래서 이전에 언리얼엔진4 버전 강의가 있던데 그것을 기반으로 언리얼엔진5 에도 적용해도 될까요?
미해결
이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
안녕하세요 AI시스템 구현도중 ComboActionData를 불러올수 없는 문제가 생겨서 질문 드립니다. 우선 이것저것 바꿔서 실습 해보는 중이라 강의 코드랑 다른부분이 있을순 있습니다만 베이스는 강의코드입니다... void ATLStageGimmick::OnOpponentSpawn() { const FTransform SpawnTransform(GetActorLocation() + FVector::UpVector * 88.0f); ATLCharacterNonPlayer* OpponentCharacter = GetWorld()->SpawnActorDeferred<ATLCharacterNonPlayer>(OpponentClass, SpawnTransform); if (OpponentCharacter) { OpponentCharacter->OnDestroyed.AddDynamic(this, &ATLStageGimmick::OnOpponentDestroyed); OpponentCharacter->SetLevel(CurrentStageNum); OpponentCharacter->FinishSpawning(SpawnTransform); } } 우선 기믹 코드쪽에서 이렇게 스폰을 해주는데요, (예제랑 같습니다) CharacterNonPlayer를 상속받아 BP_EliteBoss라는 이름으로 블루프린트를 만든뒤 기믹 엑터에 이렇게 설정을 해줬습니다. 그리고 BP_EliteBoss안에 필요한 몽타주와 ComboActionData를 설정해줬는데요 그래서 게임을 실행해보면 정상적으로 스폰도 되고 이동도 합니다. 그런데 정작 공격을 진행하면 ComboActionData가 없다는것 아니겠습니까..? 저는 분명 블루프린트에서 ComboActionData를 넣었는데 말이죠.. 혹시 SpawnActorDeferred하게되면 에디터에서 지정한 에셋들은 사용할 수 없는건가요??? 해결방법을 찾다 안돼서 질문 드립니다...
미해결
이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
현재 ABStageGimmick.cpp에서 빌드 에러가 납니다. void AABStageGimmick::OnOpponentDestroyed(AActor* DestroyedActor) { IABGameInterface* ABGameMode = Cast<IABGameInterface>(GetWorld()->GetAuthGameMode()); // 에러 SetState(EStageState::REWARD);; } 에러 내용은 아래와 같습니다. 1>C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\CoreUObject\Public\Templates\Casts.h(85): error C2027: use of undefined type 'AGameModeBase' 1>C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Engine\Classes\Engine\GameInstance.h(29): note: see declaration of 'AGameModeBase' 1>C:\UnrealProject\UE5_GameFrameWork\ArenaBattle\Source\ArenaBattle\Gimmick\ABStageGimmick.cpp(288): note: see reference to function template instantiation 'To Cast<IABGameInterface,AGameModeBase>(From )' being compiled 1> with 1> [ 1> To=IABGameInterface, 1> From=AGameModeBase 1> ] 현재 리서치해본 결과 ABGameMode가 어떤 클래스인지 파악 못해서 GameModeBase.h파일을 추가해줘야 한다고 합니다. 아니면 UObject로 형변환 한 뒤에 캐스팅해오라고 되어있습니다. void AABStageGimmick::OnOpponentDestroyed(AActor* DestroyedActor) { IABGameInterface* ABGameMode = Cast<IABGameInterface>((UObject *)(GetWorld()->GetAuthGameMode())); if (ABGameMode) { ABGameMode->OnPlayerScoreChanged(CurrentStageNum); if (ABGameMode->IsGameCleared()) { return; } } SetState(EStageState::REWARD);; } 그래서 이렇게 수정하니 해결이 되었는데 혹시 왜 저는 강사님처럼 코드를 작성하면 되지 않는지 아직 이해가 가지 않습니다. 알려주시면 감사하겠습니다!
미해결
이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
7강 언리얼 C++ 설계 인터페이스 18:40초 언리얼 인터페이스의 DoLess함수는 UFUNCTION매크로를 사용하지 않아도 되나요?
미해결
이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
9강 44분쯤 약참조를 위해 FSoftObjectPtr를 쓰시는데 이전에는 TSoftObjectPtr를 쓰셧던거같아, 구글에 검색해보니 TSoftObjectPtr는 FSoftObjectPtr를 UObject로 랩핑한 ptr이라고 하는데요, 그런데 굳이 이걸 명시적으로 나누어진이유가 있을것이고 교수님께서 사용하신 의도가 있는거같아서 궁금해서 여쭈어봅니다 해당부분에서는 FSoftObjectPtr 대신 TSoftObjectPtr를 사용해도 같은 결과를 내긴했습니다. 교수님께서는 그냥 예시를 위해 사용하신건지 아니면 특별한 이유가 있는건지 궁금합니다.
미해결
이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
StateChangeAction.Add(EStageState::READY, FStageChangedDelegateWrapper(FOnStageChangedDelegate::CreateUObject(this, &AABStageGimmick::SetReady))); 이부분을 구조체를 선언해서 사용하는 이유가 궁금합니다. StateChangeAction.Add(EStageState::READY, FOnStageChangedDelegate::CreateUObject(this, &AABStageGimmick::SetReady)); 이런식으로 Value를 딜리게이트 자체를 넘겨줄수있는데, 굳이 저렇게 구조체를 만드는 이유가 뭔가해서요, 예측하건데 파라미터도 동시에 넣어줄수있도록 하기위함인가요 아니면 따른 이유가 있는건가요 ?
미해결
이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
현재 리플렉션 시스템 강의를 듣고 있습니다. 작성하신 코드를 보니 하위클래스에선 오버라이딩된 가상함수에는 UFUNCTION 매크로를 작성하지 않으시던데, 부모 클래스에서 매크로를 작성해놓았다면 자식 클래스에선 하지 않아도 되나요? 만약 부모 클래스에서도 UFUNCTION()을 작성하고 자식 클래스에서도 UFUNCTION() 매크로를 작성하게 되면, 오류가 발생할 수도 있나요? 아니면 굳이 두 번 작성할 필요가 없기 때문인가요?
미해결
이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
루트 모션 관련해서 알아보다가 실습 마지막 콤보 모션이 생각나서 확인해보니, 점프했다가 찍는데 캡슐 콜리젼 위치는 변하지 않는 것을 확인했습니다. 애니메이션 시퀀스에서 루트모션을 활성화 시키고 해봐도 더 이상해지는 듯하여 질문드렸습니다... 캡슐 콜리전이 애니메이션을 따라가게 하려면, 시퀀스 에셋에서 루트모션 활성화하는 것과 애니메이션 블루프린트에서 루트 모션 모드를 활성화하는 것 말고 다른게 있을까요???
미해결
[입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트
여기서 처음에 연습문제로 Hp를 100으로 두고 MaxHp를 150으로 두었을때 1번 키 입력시 데미지 10을 입게하고 2번 키 입력시 체력 20을 회복하게 하는 기능을 만드는 연습문제였는데 제가 좀 더 추가해서 현재 체력을 확인하는 기능이나 0이하로 떨어졌을시 데미지도 더이상 입을수없고 회복도 불가능하게 하거나 최대체력이면 최대체력이라서 회복이 불가능하다라는 문구가 나온다거나 하는식의 몇가지 응용아닌 응용해서 좀 더 살을 붙여서 풀고있었는데 의문이 드는 버그? 같은게 있어서 이게 어째서 일어나는가 싶어서 질문을 드립니다 [현재 HP 확인 노드] 키보드 3을 누를 시 HP를 카운트하여 알려준다. [데미지 받는 노드] 키보드 1을 누를 시 HP가 0보다 작을 경우 당신은 죽었습니다 라는 문구가 나온다. 키보드 1을 누를 시 HP에서 데미지를 마이너스한 HP를 카운트하여 알려준다. [체력회복하는 노드1] 키보드 2를 누를시 HP가 0보다 작을 경우 이미 사망하여 회복할 수 없습니다 라는 문구가 나온다. 키보드 2를 누를시 HP가 0보다 크고 HP가 MaxHP보다 크거나 같을경우 이미 최대 체력입니다 라는 문구가 나온다. 키보드 2를 누를시 HP가 0보다 크고 HP가 MaxHP보다 작은데 HP에 Heal(20)이 되는 수치만큼 더한 HP가 MaxHP보다 작을 경우 회복된 이후의 HP를 카운트하여 알려준다. [체력회복하는 노드2] 키보드 2를 누를시 HP가 0보다 크고 HP가 MaxHP보다 작은데 HP에 Heal(20)이 되는 수치만큼 더한 HP가 MaxHP보다 클 경우 HP를 MaxHP로 세팅하고 최대 체력으로 회복하였습니다라는 문구와 함께 최대HP를 카운트하여 알려준다. 여기서 체력확인이랑 데미지는 문제없었는데 체력을 회복할 때 다른곳에서는 문제가 전혀없었는데 체력이 120일때 회복을 하면 현재체력 120+ 체력회복 20으로 체력이 140이 되어야하는데 140을 건너뛰고 150으로 가더라구요... 데미지 입을때는 140 130 120 110 100 90 80 쭉쭉 건너뛰지않고 잘 내려가고 회복할때도 40일때 회복하면 60, 60일때 회복하면 80, 100 120 잘 가다가 120일때만 30이 회복되는게 왜그런가 궁금합니다!
미해결
이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
제목과 같습니다.