ThirdPerson Templet로 C++로 NetTPS로 제작
언러일 에디터 닫고 Visual Studio 닫고 프로젝트 폴더 Source/Project명/ Private, Public폴더 만들고 정리 헤더는 Public, cpp는 Private로 이동
프로젝트명 우클릭 Generate Visual Studio Project Files만들어야 함. sin확장자를 클릭해 프로젝트를 열어야함.
Visual Studio가 열리면 가운데 시작을 누름
언리얼에디터가 뜨면 NetTPS폴더를 하나만듬
ThirdPerson안의 Blueprints, Input폴더를 NetTPS폴더로 끌어다 놓고 이동 확인
UIs폴더 작성 Input을 Inputs로변경
삼점을 눌러 Net Mode를 Listen Server로 변경
Editor Preferences에서 Always on Top을 체크
Allow lateJoinning도 체크
이렇게 하면 플레이시 Add another cliet버튼이 생긴다.
BP_thirdPerson을 클릭해 열자 가운데 Open Full BlueprintEditor를 클릭 이 블루프린트는 프로젝트이름의 캐릭터를 부모로 한다.
Character Movement를 선택 디테일에서 rotation으로 필터링해서 아래와 같이 설정
Compile옆 삼점을 눌러 세팅을 변경하고 Compile
실행후 이동해보면 캐릭터가 옆으로 이동시 회전하지 않는다. 사격시 용이하게 하기 위해서다.
다음은 카메라 위치를 배틀그라운드 처럼 바스트샷으로 만들기 위해
BP_ThirdPerson의 CameraBoom컴포넌트 선택후 디테일 Trasform의 위치를 변경
TargetArm Length를 150으로 가깝게 해주자
카메라 앵글이 아래와 같이 변경된다.
이제 이 설정을 C++로 옮기자 그전에 visual studio 관련 플러그인을 전부 켜주자.
Visual Studio로 이동해 생성자에서 Rotation에 관한 설정을 변경해주자. bUseControllerDesireRotation=true는 추가해줘야한다. 위의 플러그인을 추가했다면 자동완성이 될것이다. Fab에서 VS Integration Tools를 엔진에 추가해줘야할수도 있다.
카메라붐의 위치를 추가 길이를 변경해준다. 위치는 블루프린트에서 복사해서 가져와도 된다.
플레이 해보면 캐릭터가 사라졌다. 맨처음 게임모드 C++을 이동시켜서 그렇단다. 우클릭후 블루프린트를 만들자
이름은 BP_NetTPSGameMode로 하고 DefaultPawnClass를 BP_ThirdPersonCharacter로 한다.
블루프린트 단추를 누르고 GameModeOverride를 방금만든 BP_NetTPSGameMode로 변경한다.
강의에서는 애니메이션을 임포트했는데 난 소스가 없어서 언리얼 마켓에서 임포트했다.
https://www.fab.com/ko/listings/98ff449d-79db-4f54-9303-75486c4fb9d9
이건 기본 UE4 마네킹 하고도 안 맞아 IKRig를 제작하고 리타게팅하였다. 5.3은 이게 안 좋다 ㅠㅠ 5.5는 거의 자동이다.
스타터팩에서 UE5로 리타게팅을 하니 손가락이 꼬였다. 잘 보니 UE5의 손가락은 본이 하나 더 있다. 그래서 비슷한 UE4로 변경후 다시 UE5로 리타게팅하니 잘된다. UE4UE5리타게터는 기본적으로 있다 이게 왜 있는지 알게 되었다.
메시와 Anim Class를 바꾸자.
Mannequins의 ABP_Manny를 NetTPS/Animations폴더로 이동시킨다.
BlendSpace를 만들고 SK_Mannequin을 선택하고 이름을 BS_PistolMove로 한다.
BP_ThirdPersonCharacter를 열어 MaxWalkSpeed를 변경해준다.
열어서 축의 이름을 바꿔준다. 최소 최대 값도 바꿔준다.
idle_Pistol을 선택해서 SHT를 누른상태에서 끌어다 가운데 놔준다.
walk jog로 필터링해서 fwd,bwd,left,right애니메이션을 배치해준다. ctrl을 누르고 마우스를 움직여보면 프리뷰를 볼수 있다. walk 속도가 느리니 안쪽 jog는 뛰는거니 바깥쪽에 해준다.
C++클래스를 만들어보자 All Classes를 선택하고 animinstance를 검색해 선택해준다.
VisualStudio에서 bHasPistol변수를 추가하자 블루프린트에서 읽을수 있게 UPROPERTY를 설정한다.
새로 클래스를 만들거나 변수를 추가했을때는 UnrealEditor를 끄고 VisualStudio에서 다시 열어주는걸 추천한다.
ABP_Manny를 열고 ClassSettings에서 ParentClass를 방금만든 NetTPSAnimInstance로 교체해준다
다시 ClassDefaults로 돌아와 블루프린트탭이나 Detail에서 만든 HasPistol변수가 보여야한다.
AnimationGraphs의 Locomotion으로 이동해서 Entry를 끊어준다.
Add Conduit을 추가하고 이름을 HasPistol로 변경하고 다음과 같이 연결 Conduit을 조건에 따라 Animation의 흐름을 변경할수 있는 노드다.
HasPistol을 열어 무조건 통과하게 체크해주자.
다시나와 HasPistol에서 분기하는 4가지 조건을 HasPistol변수를 이용해 작성해준다. Pistol을 가졌을때는 BS_Pistol로 가게하고 아닐경우 빠져나와 Idle로 가게하기 위함이다.
Idle쪽
BS_Pistol쪽
컴파일해보면 에러가 난다.
AnimGraph로 나와 Locomotion을 선택해 Allow Conduit Entry Stats를 켜주면 된다.
다시 Locomotion안으로 들어가서 보면 Walk/Run시 총을 들었을때 BS_PisolMove로 갈수 없다. 그래서 AddStateAlias를 만들고 이름을 AnyState로 한다.
AnyState를 BS_PistolMove와 연결해주고 HasPisol로 조건을 만들어준다.
AnimPreview에서 HasPistol를 체크해보면 Idle과 BS_PistolMove노드가 잘 전화되고 애니메이션이 반영된다.
NetTPSAnimInstance.h에 direction과speed를 추가하고 컴파일하면
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AnimSetting")
float direction;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AnimSetting")
float speed;
변수가 블루프린트에 반영된다. 안되면 껏다 켜자.
BS_PistolMove로 들어가 변수를 연결해준다.
'언리얼러닝 > Multiplayer' 카테고리의 다른 글
Multiplayer Replication (0) | 2025.03.05 |
---|