FPS 마이크로 게임 커스텀 스텝
https://learn.unity.com/project/fps-maikeurogeim
기존에 주어진 에셋을 활용하여 에셋을 수정해 새로운 아이템과 적을 생성
FPS 모드: 체력 팩 강화
- 체력 픽업의 모양을 다른 모양으로 바꿔본다
1. Scene에 추가되어 있는 Pickup_Health을 확장
2. 원하는 모양의 그래픽 에셋을 Pickup_Health의 그래픽 에셋이 있는 위치에 추가
3. 기존 그래픽 에셋이 표시되지 않도록 토글
4. 수정한 Pickup_Health을 클릭 후 Overridies
- 경험점
Overridies을 할 겅우 에셋에 있던 Pickup_Health.prefab이 변경되고, 해당 prefab로 생성한 scene내의 모든 Pickup_Health 가 변경됨
scene내의 Pickup_Health은 일종의 child 인지, 에셋에 있는 prefab이 수정, 저장된 이후, scene 내에 해당요소에 무언가를 추가하는 것은 허용되지만, 저장되 있던 prefab의 요소를 삭제하는 건 , 에셋에 있는 prefab을 수정해야함.
다음 챕터에서 방법처럼 원본 prefab을 복사하여 에셋에 추가한 후 수정하는 것이 바람직해 보인다.
FPS 모드: 모자를 쓴 새 적 로봇 추가
- 적의 모양에 다른 모양을 추가해본다.
1. assets에 Enemy_HoverBot.prefab을 선택 및 복사본 생성 ( Ctrl+D )
2. 복사된 prefab을 선택, 열기
3. 계층에서 Top_Cap_CJnt 오브젝트에 추가하고자 하는 에셋을 드래그 앤 드롭
4. scene view에서 추가한 요소를 적당히 이동, 회전 후 저장
5. mainscene에 수정한 prefab을 추가하고 테스트
- 경험점
Enemy_HoverBot은 세개의 그래픽 요소로 구성됨, 그리고 피격 애니메이션이 적용되어 있음
이 피격 에니메이션을 추가된 그래픽 요소를 추가하기 위해서, 해당하는 파트에 추가한 것으로 보인다. Enemy_HoverBot에 그냥 새로운 애니메이션 요소를 추가하면, 유닛을 따라 이동 할쁀, 별다른 애니메이션이 적용되지 않음
CJnt가 각 그래픽 요소의 일종의 연결 역할을 하나?
SUB - FPS Mod: Tweak the Damage Dealt by Enemies and Attack Range
- 적의 공격을 수정해 본다.
1. assets에서 바꾸고자 하는 enemy prefab을 선택한다.
2. WeaponRoot/weapon_EyeLazers 오브젝트를 선택한다.
3. shoot Parameters 에 있는 Delay, Between Shots, Bullet Spread Angle, Bullet spread Angle을 적당히 수정한다.
4. 공격력 파라미터가 없는 것을 볼 수 있는데, 이는 투사체에 설정되어 있다, 공격력을 수정하기 위해서 에셋에서 투사체 prefab이 있는 폴더로 간다. (해당 설정 요소를 클릭하면 해당 폴더로 이동)
5. custom한 투사체를 만들기 위해, 기존 투사체의 복사본을 만들고 공격력을 수정한다.
6. 다시 WeaponRoot/weapon_EyeLazers 오브젝트로 돌아와 projectile prefab에 커스텀한 투사체를 드래그 앤 드롭해준다,
7. 적의 공격 거리를 수정하기 위해, enemy prefab에서 Enemy Controller를 찾는다. Attack Range field를 수정한다.
# 현 버전(유니티 2021) 상에서 Attack Range 파라미터는 물론, Weapon_EyeLazers 와 연결한 부분도 찾을 수 없다.
하지만 해결 방법이 있다.
+8. Attackrange를 변경하기 위해 enemy prefab에서 Add component하여 detectionmodule를 추가해준다,
+9. Attackrange를 수정한다. Detection Source Point (range를 잴 원점), 과 animator (동작을 수행할 오브젝트)를 설정한다. 이 경우 공격이 나가는 Weapon_EyeLazers 와 BasicRobot을 설정 해 주었다.
- 경험점
공격력이 투사체에 설정되어 있는건, 이 microgame의 특징인지, 유니티 설정의 특징인지 모르겠으나, 이런 방식도 있다는 것을 알아두어, 헤매는 일이 없도록 해야한다.
유니티 상에서 attackrange 파라미터가 안보이는 문제를 고찰하기 위해, script 파일을 열어보았다. EnemyController script 파일을 열어보았는데, 현재의 enemy prefab의 내부에 EnemyContoller가 별도로 있는것이 아니라, 에셋의 AI 폴더의 EnemyContoller 스크립트가 열였다. Attackrange 파라미터는 detectionmodule 스크립트에 선언되있는 것을 끌어다 쓰는 구조였다. 다시 돌아와 enemy prefab을 위한 EnemyContoller 스크립트는 AI 폴더의 EnemyContoller 스크립트에 별도로 설정한 파라미터가 적용된 것이다. 이 파일은 따로 생성되있는 것이 아니라, 나중에 실행, 혹은 디버깅 할 때, 해당 스크립트에 파라미터를 적용하여 생성한다는 것을 유추할 수 있다. 따라서 Attack Range가 변경된 파라미터를 적용하기 위해서는 EnemyContoller가 Attack Range를 가져오는 대상인 detectionmodule 스크립트도 역시 enemy prefab의 EnemyController 처럼 별도로 enemy prefab의 detectionmodule를 설정해주면 된다. 따라서 유니티에서 선택한 enemy prefab에서 add component 를 클릭하여 detectionmodule를 추가해주면, enemy prefab을 위한 detectionmodule을 설정해 줄 수 있다.
SUB - FPS 모드: 컬러 입히기
- 요소의 색상을 바꾸어 본다.
1. Assset 안에 material를 찾아 원하는 부위에 드래그 앤 드롭해서 적용하거나, 설정칸에 넣어준다.
2. 원하는 색상을 만들고자 할 때는, 기존의 머터리얼의 복사본을 수정해서 만든다.
- 경험점
색상도 투명도, 광택 등 여러요소는 가지기에 별도로 색상 요소를 만들어 쓰는 듯 하다. 이러한 이유로 기존 저장된 matarial를 바꾸면 적용되었던 모든 요소의 색상도 바뀐다는 점을 유의해야 겠다.
FPS 모드: 적을 처치했을 때 얻을 새 전리품
- 적을 처치 했을 때의 드랍품을 바꾸어 본다.
1. 적을 mainscene에 생성 후, 클릭하여 EnemyController에서 Loot, loot prefab을 선택한다.
2. 원하는 전리품 prefab을 드래그 앤 드롭하거나, 찾아서 넣어준다.
3. 추가적 기존에 존재하는 pickup item의 복사본이 아닌 prefab variant 를 생성한다.
4. 해당 prefab varient에 VFX_PickupSpakles 효과를 드래그 앤 드롭한다.
- 경험점
누군가 손쉽게 구현해놓은 Loot 기능의 품목만 바꾼 것이다.
prefab variant는 일종의 prefab의 자식이다. 부모에 새로운 요소가 추가되면 자동으로 같이 추가가 된다고 한다.
의외로 새로운 등장 효과 입히는게, 그냥 같이 나오게 하는 것뿐이 간단한 방식이다.
SUB -FPS 모드: 새 연사 소총 무기 설정
- weaponcontroller script를 사용하여 새로운 총기 생성
1. mainscene의 계층 탭에 '+' creat empty 을 클릭해여 GameObject를 생성한다.
2. rename으로 적당한 이름을 붙여주고, assets/ FPS/prefab/weapon 폴더에 드래그 앤 드롭한여 prefab을 생성한다.
3. 해당 prefab 연 뒤 생성한 게임 오브젝트를 선택하고, Transform 를 리셋시킨다.
4. Add Component 를 눌러 weaponcontroller를 추가한다.
5. ModAssets/models/weapons 경로에 있는 mesh를 오브젝트에 추가한다. 해당 오브젝트를 클릭하고 위치를 0, 0.1, 0.27로 설정한다. (FPS뷰에서 올바르게 배치하기 위함이라고 한다.)
6. weapon icon, 기타 총기 관련 변수, 색상을 커스텀 한다.
7. weaponcontroller 와 생성한 게임 오브젝트를 연결하기 위해, weapon root에 게임 오브젝트를 드래그 앤 드롭한다.
8. 투사체가 나오는 위치를 넣어주기 위해, 새로운 게임오브젝트를 생성하고,(muzzle) 무기 게임오브젝트 안에 배치한다.
9. scene에서 muzzle을 총구로 쓸 부분으로 적당히 위치시키고 weapon controller에서 weapon muzzle과 연결시킨다.
10. shoot Type 필드를 'automatic'으로 토글하고, 투사체를 설정한다.
11. 총구 섬광 시각효과(VFX)와 총격 효과음(Sfx)을 적당히 선택해 Muzzle Flasj prefab 과 shoot Sfx에 각 각 연결시킨다.
12. 해당 무기를 인게임에서 사용 가능하도록, pickup prefab을 만들어야 한다. 기존에 존재하는 pickup prefab의 복사본을 만든다.
13. 복사한 prefab의 최상위 오브젝트를 선택한 뒤, weapon pickup의 weapon prefab 에 만든 weapon prefab을 연결 시킨다..
14. 그래픽 표시를 수정하기 위해, 계층에서 복사본에 존재하는 무기 오브젝트 삭제하고 해당 위치에 생성한 무기 prefab을 넣어준다.
- 경험점
구현된 script를 사용해 봄으로써, script가 어떤 요소를 가져야 할지 유추해 볼 수 있었다. 또한 단순히 한개의 총기 prefab을 만들기 위해서 다양한 요소도 구비해야 한다고 알 수 있었다.
20240403 FPS Microgame Customize 추가 진행 보류.
'Study > Unity learn' 카테고리의 다른 글
Unity / Basic Design Patterns (0) | 2024.05.23 |
---|---|
Unity learn - Make a flag move with shadergraph (0) | 2024.05.03 |
Unity learn - Creative Core (0) | 2024.04.29 |
Unity learn - Unity Junior Programmer (0) | 2024.04.09 |
Unity learn - Unity Essentials (0) | 2024.04.04 |