ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2D.MetalSlug 04. Map 01 / 02
    연습 프로젝트/2D.Metal Slug

    안녕하세요!

    지난 글에서 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초

    완성된 맵과 함께 전투 신을 구성한 모습으로 돌아오겠습니다!!

    감사합니다.

    댓글

김효겸 / Tel. 010-7735-0580 / E-mail. dollzzang2@hanmail.net