[HollowKnight] FalseKnight 동작구현 -Slam2 : Player GetHit(이펙트 추가, 충돌시 깜박임 효과, Camera Shake)

Player의 GetHit 상태

-Player는 GetHit되면 충돌 이펙트가 생겨나고 애니메이션 자체는 단순하지만,

뒤로 약간 밀려나며, 이펙트의 애니메이션이 함께 실행되어 연출된다.

-이후에는 흑백으로 깜박이면서 제자리에 낙하한다. 낙하 애니메이션은 JumpDown과 동일하다.

-이 애니메이션 실행시간동안 Camera Shake가 일어난다.

 

-따라서 GetHit애니메이션을 생성할때 뒤로 밀려났다 제자리로 오는 부분은 애니메이션으로 구현하되, 플레이어의 전체적인 위치는 약간 뒤로 밀려나도록 코드를 작성해야한다.

충돌시 밀려나는 동작

-WaveAttack.cs를 다음과 같이 수정하였다.

PlayerController의 onPlayerGetHit

-현재에는 플레이어가 effectGo,즉 충격파의 방향을 받아와 그 방향에 의해 뒤로 밀려나도록 했는데, GetHit 은 다른 오브젝트 일 수 있으므로 코드를 수정할 필요가 있다.

 

플레이어가 GetHit일때 깜빡임 효과 

-위에 작성한 GetHit을 코루틴으로 바꾸고 깜박임을 보여주는 코드를 추가로 넣어주었다. 골드메탈님의 코드를 참고했다. 시간을 재서 짝수 초일때, 홀수 초일때 색을 바꿔준다. while문을 다 돌면 color를 원래대로 돌려둔다. 

 

https://m.blog.naver.com/gold_metal/220892674946

 

[유니티 2D 기초] 11.플레이어 피격

이번 시간에는 플레이어가 생명력을 가지고 몬스터, 낭떠러지같은 피격에 대한 로직을 구현해보도록 하겠습...

blog.naver.com

CameraShake

-충돌 시 밀려나기만 하면 타격된 느낌이 들지 않으므로 CameraShake를 넣어주었다.

-ShakeAmount를 조절해 세게 흔들지 결정한다. Amount가 커질수록 세게 흔들어진다.

camera오브젝트 / PlayerConroller  수정
CameraController

https://docs.unity3d.com/ScriptReference/Random-insideUnitSphere.html

 

Unity - Scripting API: Random.insideUnitSphere

Note that the probability space includes the surface of the sphere because value, which is inclusive to 1.0, is used to acquire a random radius.

docs.unity3d.com

 

CameraShake + 깜박임효과 구현

-GetHit 애니메이션과 다른 애니메이션을 Animator에서 조정하고 공격하거나 점프중에도 GetHit이 정상적으로 되도록 코드를 수정했다.

-Moving과 Jump는 isGetHit이 true이면 move상태나 jump상태이더라도 state를 직접 바꾸게 하였다.

 

myoskin