[110]-FPS Sample-Robot
현재 무엇을 하고 있는지에 대해서는 아래를 참조.
000-Unity FPS Sample Project
#유니티, 유니티 튜토리얼, 유니티 강좌, Unity, Unity tutorial, HDRP, FPS Sample, 게임 개발, C# FPS Sample은 Unite 2018 LA에서 공개된 프로젝트로 Unity로 제작된 FPS(First Person Shooting) 스타일의 게임..
nampt.tistory.com
Unity FPS Sample 공식 사이트 참조
FPS Sample - A multiplayer shooter game project | Unity
Use it to learn about the latest features in Unity, extract and use the parts you need or use the full project as a starting point for your own games.
unity.com
작성한 프로젝트는 Github을 통해 내려 받으세요
https://github.com/nampt68/Repeat_FPS_Sample/
nampt68/Repeat_FPS_Sample
Making Unity FPS Sample from zero. Contribute to nampt68/Repeat_FPS_Sample development by creating an account on GitHub.
github.com
이번은 글이 상당히 길 것 같다.
역시 Compile Error가 있으니, Import시 자동으로 Load 되던 Script도 Load가 되지 않는다.
CharactherPresentationSetup에 사용된 BaseComponentSystem이 정의되지 않았으니, 추가하자.
FPS Sample상 위치는 아래와 같다.
BaseComponentDataSystem script를 생성하고 Code를 복사해 넣으면, 더 많은 Error를 볼 수있다.
Code는 추후 살펴보고, Script를 추가해 나가자.
CharactherPresentationSetup- BaseComponentDataSystem-GameWorld
Error 해결을 위해 지나온 Script를 잊지 않기 위해 위와 같이 정리하면서 가자.
GameWorld를 추가하자.
FPS Sample에서의 위치
Assets/Scripts/Game/Entity/GameWorld.cs
아래와 같이 추가한다.
추가하니, 또 여라 Error가 있다.
언제까지 이러려나..
CharactherPresentationSetup- BaseComponentDataSystem-GameWorld
GameWorld 내의 첫번째 Error는 GameTime 인데, FS(FPS Sample)에서 Game.cs에 구현되어 있다.
이런 식으로는 Code 추가만 하다 끝날지도 모르겠다.
Script는 모두 복사해 두고, 분석은 차후에 하자.
Script 폴더를 복사하자.
복사를 했더니, Script를 Import 하기 시작한다.
그리고 다시 실행하자.
기존 Script 는 "Script"에 작성을 했었고, FPS Sample에서는 "Scripts"로 되어 있다.
Script 폴더는 삭제하였다.
아래의 Error가 보이는데, 해결해보자.
Unsafe code가 사용되었다고 한다. 포인터를 사용했다는 말.
우선 별 관계는 없지만, ECS 사용을 위해 아래와 같이 변경한다.
아래와 같이 Allow 'unsafe' Code를 Check 한다.
그랬더니, 1개의 Error만 남았다.
아래의 GraphVisualizerClient.Show 함수가 정의되지 않아서이다.
FS Sample에서 위치는 아래와 같다.
Assets/Plugins/PlayableGraphVisualizer/Clients/GraphVisualizerClient.cs
Plugins 폴더의 Plugin 들을 폴더 째로 복사하자.
복사를 하게 되면 다시 Unitry가 Import를 시작한다.
Import 이후 다시 Error가 발생했다.
역시 SelectionHistoryWindow 객체를 찾을 수 없다는 사항이다.
FPS Sample에서 위치는 Assets/Tools 폴더에 위치한다.
Tools 폴더도 모두 복사하자.
이제야 모든 Error가 사라졌다.
Robot_A Prefab의 Script도 문제 없이 잘 추가되었다.
이제 다사 Prefab 작성을 계속하자.
이름을 변경한다.
CharacterPresentationSetup 추가
Hit Collision History 추가
FPS Sample에서 보면 Robot_HitColl을 추가해야 함.
FPS Sample에서 Robot_HitColl Prefab을 확인. Skeleton Script만 추가되어 있음.
사용된 Model을 알아내기 위해 아래와 같이 Popup menu에서 Select Prefab Asset 클릭.
Robot_Basic.fbx를 가지고 만든 Prefab인 것을 알 수 있다.
수정 History 관리
Robot_A_Client - Robot_HitColl
>>Robot_A_Client를 작성 중에 Robot_HitColl이 필요하여 수정 중이다라는 의미.
FPS Sample에서 Robot_Basic.fbx는 이미 복사해 둔 상태이다.
Project 창에서 Robot_Basic.fbx를 클릭하고 보면 Script까지 추가되어 있는 것을 알 수 있다.
Scene에 Game Object로 추가
Inspector에서 추가한 GO를 확인하니, FPS Sample의 것과 같다.
이름을 변경한다.
Project 창에서 Assets/Prefabs/Characters/Robot이동 후 Hierarchy 창에서 Robot_HitColl을 Drag하여 Project 창에 Drop 한다.
이때 Prefab 형식을 물으면 Variant를 선택한다.
아래와 같이 Prefab의 이름을 변경한다.
Note : Robot_A_Client는 실험을 위해 만든 것이니, 만들지 않아도 된다. 이후에 삭제하겠다.
Hierarchy 창에서 Robot_HitColl Game Object는 삭제 한다.
Robot_HitColl을 할당.
설정값 수정.
Character UI Setup script 추가
FPS Sample에서 UI_Health Prefab 확인.
Robot_Client_A - UI_Health
Canvas GO(Game Object)를 생성.
Robot_A_Client GO는 Check 해제하여 UI 수정시 방해가 되지 않도록 한다.
UI-Panel 추가
아래와 같이 수정.
Rect Transform만 남기고 나머지는 삭제.
아래의 Script 추가.
Image 추가
이름변경.
FPS Sample에서 아래 아이콘을 복사해오자.
복사함.
Import setting 변경 후 Apply
Source Image에 할당한다.
추가.
이름변경.
FPS Sample에서 Font를 복사해 오자.
복사 후 Import 되고, 별도의 설정이 필요하지 않다.
Font를 Roboto-Regular SDF 로 바꾸자.
아래와 같이 설정을 바꾼다.
Scene 창에서 아래와 같이 작성된 UI를 볼 수 있다.
HealthText를 할당한다.
작성한 UI_Health를 Prefab으로 저장한다.
Assets/Prefabs/Characters/Generic
만들었던 Canvas는 삭제한다.
다시 Robot_A_Client를 Open하여 Character UI Setup에 작성한 UI_Health를 할당한다.
RagdollOwner Script를 추가한다.
FPS Sample에서 보면 Prefab이 할당되어 있다.
Robot_Ragdoll을 작성한다.
수정중 : Robot_Client_A - Robot_Ragdoll
Ragdoll Prefab은 Robot_Basic.fbx를 바탕으로 만들어졌다.
Robot_Basic.fbx를 Drag하여 GO로 추가한다.
이름을 바꾼다.
Prefab Variant로 저정한다.
이름에서 Variant를 지운다.
작성한 Ragdoll Prefab을 할당한다.
이제 아래 FPS Sample과 같이 Anim State Controller를 추가하자.
할당되어 있는 AnimGraph는 아래에 위치하고 있다.
먼저 Anim State Controller를 추가한다.
FPS Sample에서 AnimGraph를 살펴본다
AnimGraph를 작성하자.
이름을 AnimGraph로 변경한다.
작성중 : Robot_A_Client - AnimGraph
FPS Sample과 동일하게 작성하기 위해 Element0에 할당된 AnimStateSeletor를 살펴보자.
위치는 아래와 같다.
작성중 : Robot_A_Client - AnimGraph - AnimStateSelector
AnimStateSelector를 작성하자.
FPS Sample에서 살펴보니, 아래와 같다.
AnimStateSelector를 생성한다.
이름을 변경한다.
Size를 5로 바꾼다.
작성중 : Robot_A_Client - AnimGraph - AnimStateSelector - Locomotion
Element 0에 할당되어 있는 Locomotion을 확인하니, 역시 동일 폴더에 위치한다.
SprintBlend를 작성한다.
이름을 Locomotion으로 변경한다.
추가된 모습.
Locomotion에 Run Template의 위치이다.
이제 Run 을 작성해보자.
작성중 : Robot_A_Client - AnimGraph - AnimStateSelector - Locomotion - Run
이름을 바꾼다.
Inspector 창에서의 모습.
FPS Sample에서 확인
Animation Clip이 할당되어 있는 것을 알 수 있음.
Animation Clip은 FPS Sample에서 아래의 위치에 저장된 것을 알 수 있다.
작성중 : Robot_A_Client - AnimGraph - AnimStateSelector - Locomotion - Run - Animation Clip 작성
FPS Sample에서 Inspection 창을 통해 Animation을 확인할 수 있는데, 아래와 같이 자주색으로 나온다.
이때 Robot_A_Client Prefab을 Drag하여 검정색 창에 Drop하면 정상적인 Robot의 모습을 볼 수 있다.
Animation을 Import 하기 위해 아래의 파일을 복사해 오자.
먼저 Rig 를 설정하고 Apply 한다.
아래와 같이 설정을 변경.
Model에서는 Animator Component가 있었으나, 설정 이후 자동으로 사라졌다.
아래의 현재 작성 History를 참고하여 Run 객체에 Animation Clip을 할당하자.
작성중 : Robot_A_Client - AnimGraph - AnimStateSelector - Locomotion - Run - Animation Clip 작성
Blend Space Nodes 의 Size를 9로 바꾸고 Animation Clip을 계속 생성해보자.
Run_N Clip
파일을 복사했다.
Animation에서 보면 아래와 같이 되어 있다.
수정
작성중 : Robot_A_Client - AnimGraph - AnimStateSelector - Locomotion - Run - Animation Clip 작성
Run에 할당하자.
FPS Sample과 같이 이제 Run_NE를 작성하자.
복사했다.
작성중 : Robot_A_Client - AnimGraph - AnimStateSelector - Locomotion - Run - Animation Clip 작성
Run에 할당하자.
Run_E를 작성한다.
Run Scriptable Object에 Run_E를 할당.
Run_SE 작성
Run Scriptable Object에 Run_SE를 할당.
Run_S 작성
Run Scriptable Object에 Run_S 할당.
Run_SW 작성
할당.
Run_W 작성
할당
Run_NW 작성
할당.
RunInPlace 작성
할당.
Action Animations Size에 3 입력.
FPS Sample에서 확인해보니, 3개의 Anmiation Clip을 할당해야 함.
Run에 할당.
Locomotion_Grenade 복사
할당.
Locomotion--Reload 복사
할당.
이제 Run Scriptable Object 작성이 완료되었다.
어디까지 작성중이었는지를 확인하고, 이전 단계로 오자.
작성중 : Robot_A_Client - AnimGraph - AnimStateSelector - Locomotion - Run(작성완) - Animation Clip 작성
Locomotion Scriptable Object에 Run Scriptable Object를 할당한다.
FPS Sample을 살펴보면, Sprint Scriptable Object를 또 작성해서 할당해야 한다.
FPS Sample에서 위치 확인
아래와 같이 Sprint Scriptable Object를 생성했다.
아래 FPS Sample에서와 같이 Amination Clip을 작성해서 할당하자.
작성중 : Robot_A_Client - AnimGraph - AnimStateSelector - Locomotion - Sprint
Sprint_NW 작성
복사해 오면 아래와 같이 import가 된다.
Avatar는 Rig, Animation tab 을 설정하고나면 사라진다(앞서 작성한 것도 동일).
Import 설정 변경
Apply를 누르면 Avatar가 없어진 것을 볼 수 있다.
설정 변경
할당
Sprint_N import
할당
Sprint_NE Import
할당.
Anim Aim Down To Up은 기존 작성했던 Clip을 할당.
설정도 동일하게 수정.
Sprint의 작성이 완료되었다.
작성중 : Robot_A_Client - AnimGraph - AnimStateSelector - Locomotion - Sprint
이제 Locomotion Scriptable Object에 Sprint 를 할당했다.
Locomotion Scriptable object도 완료되었다.
작성중 : Robot_A_Client - AnimGraph - AnimStateSelector -
AnimStateSelector로 가자.
Locomotion을 AnimStateSelector의 Controllers의 Element 0에 할당했다.
Element 0의 나머지 설정을 수정했다.
이제 Element 1에 할당할 Jump Scriptable Object를 작성한다.
작성중 : Robot_A_Client - AnimGraph - AnimStateSelector - Jump
작성시 Scriptable Object type은 SprintBlend임에 주의한다.
이름을 Jump로 바꾼다.
FPS Sample을 확인하면, 2개의 Animaction Clip을 할당해야 하는 것을 알 수 있다.
여기까지 하고 다음에 이어서 한다.
-다소승탁진-
#유니티, 유니티 튜토리얼, 유니티 강좌, Unity, Unity tutorial, HDRP, FPS Sample, 게임 개발, C#
'Unity > Repeat FPS Sample Project' 카테고리의 다른 글
[112]-FPS Sample-Robot (0) | 2020.03.01 |
---|---|
[111]-FPS Sample-Robot (0) | 2020.02.29 |
[109]-FPS Sample-Robot (0) | 2020.02.18 |
[108]-FPS Sample-Robot (0) | 2020.02.17 |
[107]-FPS Sample-Robot (0) | 2020.02.16 |