프로그래밍 농장

Death Parkour 8일차 [ Unity ] 본문

Unity

Death Parkour 8일차 [ Unity ]

Tennessee201 2022. 9. 29.
728x90

유니티 교육과정에 있어 먼저 진행해야할 프로젝트가 있어 잠시 보류했었다.

 

보류 전 정리해두었던 부분인 Player / Enemy 전반에 대한 IDamageble 인터페이스 구현을 통한 데미지 처리방식 개편을 우선적으로 진행하였다.


8일차 추가사항 

 

- IDamageble 인터페이스 구현을 통한 Damage 처리방식 개편 

- Enemy 추가 및 활동범위 및 스캔/공격

- DollyTrack / Cart 를 이용한 게임 플레이 전 맵을 보여주는 시네마틱을 연출하였다. 

DollyTrack

 

 

개발 노트 ( 진행사항 ) 

08/30 (화)   프로젝트 시작   


 Map / Turret / Player Asset 다운 

 플레이어 이동구현

 터렛 범위 내 접근시 조준 및 발사 기능구현 ( Raycast )


->error :최초 RayCast 발사시 플레이어 위치 일정반경을 잡고 두번째 Raycast 발사시 해당 범위내에 있을시 피격처리로 수정 要  (해결) Turret 레이캐스트 피격 방식 개편 ( Position targeting -> raycast Aim / Fire 찍힌 distance 로 판단 ) -> 이 방식도 일직선에서는 피격안되는 문제있음. -> 최종적으로는 최초 Aim 레이캐스트의 위치반경 Radius를 잡고, Fire 레이캐스트에 잡힌 위치가 해당 Radius 반경에 있을시 피격처리하는 방식으로 구현 해야함. 
08/31 (수) 플레이어 파쿠르 구현 더블점프 


-> error : 더블점프후 착지후 1회 점프 추가로 수행하는 문제  :(해결) Input.Jump(space).false로 Input 입력을 초기화 해주어야했음. 

-> error:  더블점프이상을 금지한후, (JumpCnt = 0~1) 벽이나 경사에 제대로 플레이어가 못올라간 경우 계속 InAir 애니메이션을 수행하는 문제  (해결) 플레이어의 CharacterController의 Radius (=Collider) 사이즈를 피격가능한 최소치로 줄여서 미세한 벽이나 경사에도 상호작용할수있도록 하였다. 
09/01 (목) 플레이어 파쿠르 구현 - 백플립 / 매달리기

-> error : IsHanging boolean 체크로 매달리려고 할시, CharactorController 트리거 체크는 되지만, 매달리는 애니메이션으로 가지않는 문제  : (해결) 애니메이션 조건처리에서 조건이 Grounded가 우선이어서 바로 착지함.
09/02 (금) UI Canvas 개편

플레이어 HP / MP 추가  & 파쿠르별 소모 MP Table 구체화

플레이어 피격시 카메라 진동 추가 : 
현재 프로젝트의 Camera 구조는 Cinematic + Cinematic Virtual이 PlayerFollowCam에 붙어있음으로, 진동을 수행할 함수에서 Player의 자식오브젝트인 PlayerFollowCam의 localposition으로 접근하여 잡아주어야한다. 

 터렛 범위 내 접근시 조준 및 발사 기능 보완 ( Raycast )
: 
기존 Aim <-> 현재의 Position을 비교하는 방식에서 처음 Aim후 해당 Position반경을 잡은후, 발사시 잡힌 Raycast가 그 안에 있을시 피격 처리하도록 구현

-> error: Hanging 수행시 매달릴 위치보다 위 (공중)에 매달리는 현상  : (해결) Hanging 파쿠르 가능한 위치의 localposition을 기반으로 하여 플레이어의 position을 잡고 애니메이션 수행해야함.

09/03 (토) PlayerFaceCam 추가  : 플레이어의 실시간 FaceCam 및 상태별 표정모션 노출 
->error : PlayerFaceCam 의 ViewPort Rect를 조절하여 UI 원하는 UI위치상에 출력되긴 하나, Sprite안에 원하는대로 맞추어 넣고자 함.  :   UI Mask를 사용하여 PlayerFaceCam을 잘라 넣어보려하였으나 잘안됌.. UI 오브젝트에만 잘리는것같음 -> 일단 HealthBar창을 뚫고 Cam의 Rect를 잡아서 넣어준 상태. 튀어나오고, Screen Size에 대응안돼는 상태임.  : (해결) Raw Image에 다시 PlayerCam을 넣어준후 다시 마스킹으로 잘라주니 원하는대로 동그랗게 Cam화면이 잘려 들어간것을 확인할수있었다.


피격UI 추가 : 
1. UI Canvas에 피격 Sprite 하나 추가후 코루틴으로 피격시마다 알파값 조절.   /  2. Vignette.Intensity에 접근하여 코루틴으로 빨개졋다 서서히 원상태로 돌아오는 방식.   총 두가지 방식을 생각하였으며, 조사결과 상황에 맞는 다양한 피격 UI를 사용하고자 한다면 Sprite로 조절하는것이 맞고 그런것이 아니라면 Vignette로 접근하여도 괜찮다고 하여 UI를 사용.


파쿠르 Animator 추가 및 수정 


Turret 레이캐스트 피격 방식 개편 ( Position targeting -> raycast Aim / Fire 찍힌 distance 로 판단 )
09/05
(월)
 PlayerFaceCam 수정 및 보완 완료  : RawImage 마스킹으로 잘라서 넣어줌 

 피격시 UI Canvas 상 피격화면 표시 추가 : 피격 UI Canvas에 발라주고 코루틴으로 알파값 서서히 감소하도록 구현 

09/06
(화)
 플레이어 HP 에 따른 애니메이션 및 효과 적용

 애니메이션 구조 개편 (+추가)

 IDamageble 인터페이스 구현을 통한 Damage 처리방식 개편 (미완료)


JumpAttack 애니메이션 안됌
-> error :  !Grounded 이며 R을 누를시 onAir 에서 JumpAttack 애니메이션을 수행해야하는데 넘어가지않음 -> 우선순위의 문제같기도 .. 혹은 Input초기화 
09/07(수)  
Enemy 추가 및 순찰 반경 / 스캔 및 공격반경 적용 

IDamageble 인터페이스 구현을 통한 Damage 처리방식 개편 (미완료)
09/29(목) DollyTrack / Cart 를 이용한 게임 플레이 전 맵을 보여주는 시네마틱 구현 
->error
특정 WayPoint를 지난후부터는 임의로 지정한 부분을 LookAt 하도록 구현하였고, 스크립트 상에서 CinemachineVirtualCamera 컴포넌트에 접근하여 LookAt할 vector값을 넣어주었지만 카메라에 영향을 미치지않는 문제 발생 :
(해결) VirtualCamera 의 인스펙터에서 Aim 부분을 Do Nothing으로 되어있기때문에 먹지않고 있었다...
9/30(금) Timeline + VirtualCam 을 활용하여 자연스러운 화면 연출

(주말 TODO) : 캠 전환후 최종 화면에서 플레이어를 쉐이더이펙트로 생성표현 (Spawn)
https://www.youtube.com/watch?v=1fQzBYepKrY&ab_channel=UnityKorea

* 위 게임과 같은 Damageble 게임 구현시, 가장 1차원적인 방법이 해당 오브젝트의 tag를 확인하여 Damage 처리하는 방식이다. 그렇기에 금일작업에 IDamageble 인터페이스를 통한 구현을 진행하였다. 

 

728x90

'Unity' 카테고리의 다른 글

VFX 응용(기초) [Unity]  (0) 2022.10.14
Onion Design [ Unity ]  (0) 2022.09.29
Cinemachine [Unity]  (0) 2022.09.28
Cinemachine - 벽뚫기방지 및 시네머신 교체원리 [ Unity ]  (0) 2022.09.28
Base에 대하여 [Unity]  (0) 2022.09.27