2-26)TIL /./팀 프로젝트 시작

최보훈·2024년 2월 27일
1

이제 최종 프로젝트 이전 마지막 프로젝트가 시작했다!
이번 프로젝트는 자유 주제였는데 우리 팀은 하이퍼캐주얼 게임을 제작하기로 했다.
레퍼런스로 삼은 게임은
길건너 친구들 / 의지의 히어로 두가지 이다!
길건너 친구들처럼 앞으로 캐릭터를 움직이며 진행을 하고, 몬스터가 생성되 의지의 히어로처럼 몬스터들을 처치하는 게임이다.

이번 프로젝트에서 내가 맡은 부분은 몬스터파트이다.
일단 개발 순서를
1. 몬스터의 기본 동작
2. 플레이어 충돌
3. 몬스터 이동
이렇게 크게 잡고 가고자 한다.

몬스터 기본 동작

몬스터는 기본적으로 점프하는 모션을 취하게 된다.
처음에는 단순히 애니메이션으로만 점프동작을 만들었었다.

  • 애니메이션만을 이용
    몬스터의 scale. y좌료를 조정해 애니메이션을 만들었는데, 이 경우 y 좌표를 애니메이션에서 지정하려고 한게 오류였다. 세세한 조작을 위해서는 몬스터의 Rigid 를 이용해야겠다고 판단하였다.
  • RigidBody + 애니메이션
    몬스터의 실제 점프는 Rigid를 이용해 AddForce로 처리하고, 몬스터의 점프할때의 점프 모양은(Scale조정)은 애니메이션에서 하도록 변경하였다.

플레이어 충돌

몬스터의 기본 동작을 만드는 과정에서 몬스터가 땅에 있는지를 체크하는 과정에서
collision.GetContact(0).normal;을 사용하였다.
Collision충돌과 함께 사용한다.

Getcontact(index).normal : 충돌의 법선백터 (앞,뒤,상,하,좌,우) 부딪치는 물체가 다가오는 방향으로 생각하면 될듯.
Getcontact(index).otherCollider : 충돌상대의 콜라이더정보
collision.GetContact(index).point : 충돌의 좌표
collision.GetContact(index).thisCollider : 충돌본인의 콜라이더 정보

if (collision.gameObject.CompareTag("Player"))
{
    Vector3 playerNormal = collision.GetContact(0).normal;
    if(playerNormal == Vector3.up)
    {
        Debug.Log("PlayerKill");
    }
    else if(playerNormal == Vector3.forward)
    {
        Debug.Log("Player Push");
    }
}

적이 플레이어의 위에서 내려가는 경우 playerNormal == Vector3.up,
적이 앞으로 다가오는 플레이어와 충돌하는 경우 ==Vector3.forward 두 경우
전자의 경우 적이 플레이어 위로 떨어지는것이지만, 충돌체인 플레이어가 바닥에서 위로 올라온다고 생각하면 될거같다 그래서 Vector3.up

0개의 댓글