-
안녕하세요!
지난 글에서 Player의 이동 구현 및 공격 모션을 제작했었죠!
이번 작업은 플레이어가 전투를 펼칠 맵을 꾸며보려고 합니다.
구현 목록을 보시겠습니다.
1.Player 앞/뒤 이동 구현
2.Map 배치 및 Collider 충돌 체크
두 가지로 볼 수 있으며.
작업하는데 필요했던 세부사항들은 글을 쓰면서 올리도록 하겠습니다.
player가 뒤를 보면 방향을 바꿔주는 모션을 진행해 보겠습니다.
원래 진행했던 방향은 SpriteRenderer를 이용해
flipX를 true/false로 바꿔주려고 했었습니다.
코드는 PlayerController에서 player가 Move 상태 일 시
조건에 맞게 flipX를 true/false로 제어를 해 주었고
-1.0f ~ 0 ~ 1.0f의 (좌 / 우 이동) 반환 값을 주는
Horizontal의 h 값으로 조건을 걸어 주었습니다.
그런데..
상체와 하체가 분리가 되는 현상이 발생하였고
점프 모션이나 이동 모션에도 상체와 하체가 뜨는 현상이 발생했습니다.
(이유는 Sprite의 중심축이 다르기 때문입니다.)
중심축을 바꾸려던 찰나
두 가지 방법을 찾았습니다.
한 가지는 Scale을 -1로 바꾸는 방법이고
다른 한 가지는 회전 값을 180도 바꿔주는 방법입니다.
(회전 값은 써본 적은 있어도 Scale을 -1 해주니 flipX과 같은 결과가 나왔는데 오.. 지식 +1 up)
저는 플레이어의 회전 값을 바꿔주기로 했고
if문에서 오일러 각을 쿼터니언으로 바꿔주는 Quaternion.Euler를 사용해
transform(player)의 회전 값을 조절했습니다.
맵은 이런 이미지를 받아왔습니다.
다들 아시겠지만 충돌 체크가 되려면 두 오브젝트에 콜라이더가 있어야
하고 둘 중 하나는 리지드 바디가 붙어있어야 합니다.
이미 player에는 콜라이더와 리지드 바디가 붙어 있으며
맵의 바닥인지 인지할 부분과 충돌될 부분에 콜라이더만 입혀 주면 일부 완성입니다.
맵 지형이 고르지 않기에,
일부 도형 Collider로 해도 완성을 시킬 수는 있지만
전 Edge Collider2D를 사용해 봤습니다.
이 Edge Collider는 자유형으로 선으로 충돌을 만들 때 사용됩니다.
위와 같은 모양으로 계단 식도 가능하며 사선 방향도 가능합니다.
(매우 편리한 Collider 같습니다.)
위와 같이 플레이어가 점프를 뛰어 올라갈 위치에는 BoxCollider를 입혀서 구현을 했습니다.
플레이어가 점프를 안 뛰고 Move로 지나다닐 때 충돌체에 걸려 못 지나가게 되는 현상은
제가 생각하고 있는 상황이 아니기에 플레이어를 이동해 보며 체크를 해 주었습니다.
마지막으로!
단순히 카메라가 플레이어를 따라다니는 스크립트를 생성하여 MainCamera에게 입혀 주었습니다.
player의 Transform을 public으로 선언해 쉽게 할당을 해주었으며
transform(카메라)의 위치는 (플레이어의 x축 + 70.0f / 본인의 y축 / 본인의 z 축)입니다.
1. 플레이어의 x축 + 70을 한 이유는
플레이어가 정 중앙에 있는 것이 아닌 살짝 왼쪽의 위치에서 보이게 하기 위함입니다.
2. 본인(카메라)의 y, z 축을 받은 이유는
플레이어가 점프를 뛰거나 y축 이동시 카메라가 따라다니는 게임도 있겠지만
y축을 고정시키기 위함입니다. (z)
00 : 51초 맵 처음부터 끝까지의 이동 모습입니다.
간단한 작업이지만 게임 몰입감에 있어 매우 중요한 요소인 맵이기에
플레이를 더 해보며 다른 오류가 없는지 찾아보겠습니다.
(추가)
1.
플레이어는 회전을 안 할 것 이기 때문에 Freeze Rotation z 값을 체크해 둬야 합니다.
2.
플레이어는 현재 마찰 값을 가지고 있기에 벽에 닿은 채 공중에서 뜨게 되면
그대로 공중 부양을 하게 됩니다.
이를 막기 위해 전 Physics Material 2D를 사용하였고
Physics Material 2D에는 마찰 값과 튀는 바운스 값이 존재합니다.
이 마찰 값을 0으로 만들어 준 뒤
플레이어의 충돌을 담당할 캡슐 콜라이더의 Material에 입혀 주었습니다.
현재는 마찰 값이 0이지만 마찰이 있을 경우를 보겠습니다!!
↓↓↓↓↓↓↓
00 : 20초
완성된 맵과 함께 전투 신을 구성한 모습으로 돌아오겠습니다!!
감사합니다.
'연습 프로젝트 > 2D.Metal Slug' 카테고리의 다른 글
2D.MetalSlug 06. Manager (0) 2022.05.07 2D.MetalSlug 05. Map 02 / 02 (0) 2022.05.01 2D.MetalSlug 03. Bullet Fire(Animation Event) (0) 2022.04.25 2D.MetalSlug 02. Player 이동 구현 (0) 2022.04.20 2D.MetalSlug 01. Intro 영상 (0) 2022.04.11