Unity/오버워치 따라잡기

[Unity] 오버워치 따라잡기! 트레이서 편(2) - Blink 점멸

_GyC_ 2023. 3. 15. 18:03

1편에서 기본 움직임과 점프를 구현했고, 이제는 트레이서의 대표 스킬 점멸을 구현하려 한다.

트레이서의 점멸은 Shift키 또는 우클릭시 가던 방향으로 일정 거리 순간이동한다. WASD키 중 아무것도 누르지 않은 상태에서 사용하면 앞으로 점멸한다. 구현해보자!


A. 트레이서 점멸 구현하기

ChatGPT를 통해 특정 위치에서 가고있는 방향으로 일정 거리 갔을 때의 나의 위치를 계산하였다.

ChatGPT 사랑해요.

물론 직접 계산할 수 있겠지만.. 세상이 너무 좋아졌다.

어쨌든, 가고있는 방향으로의 벡터를 normalize한 것을 이용하여 점멸 후 플레이어가 있을 위치를 계산한다.

 

다음과 같이 갈 곳을 계산하였고, coroutine을 사용해서 순간이동 즉 점멸하도록 했다.

 

Update 함수에서 left shift가 눌리면 LShiftSkill() 함수가 호출된다.

LShiftSkill함수는 ChatGPT를 참고하여 점멸 후 위치인 blinkedPosition을 구한다.

Blink() 코루틴 함수는 플레이어의 포지션을 blinkedPosition으로 바꾸어 순간이동 시킨다. 순간이동 앞뒤로 character controller를 비활성화하지 않았을 때 순간이동이 잘 안되는 현상이 발생했다. 이러한 해결책은 레퍼런스 1번 영상을 참고했다.


B. 트레이서 점멸 구현 영상

 

영상 마지막 부분에서 순간이동을 하면서 벽을 뚫는 것이 가능해지는 것을 볼 수 있다.

실제 게임에서는 트레이서가 벽을 향해 점멸을 사용하면 벽에 부딪혀서 벽까지만 점멸한다.

이러한 점멸에 대한 디테일은 다음편에 다룰 예정이다.

 

그럼 다음 편에~ 즐개~ (즐거운 개발이란 뜻..)    


Reference

1. https://www.youtube.com/watch?v=xmhm5jGwonc