우리가 만들 게임은 2D Top Down 슈팅 게임 입니다.
딱봐도 엄청 어려워보이는 녀석이다. 실제로 다 하는데 엄청 오래걸렸다.
이번엔 뭔가 스크립트를 엄청 많이 나누고 작업을 했는데,
그게 아직 익숙치 않기도 했고 양도 많았어서 힘들었다.
이 게임은 기본적으로 전투를 통해 진행되는데 플레이어의 체력이 0이 될때까지
웨이브가 반복되서 지속적으로 몬스터가 생성된다.
여기서 몬스터가 플레이어를 공격하게 되는데 이 부분이 좀 어렵기도 했고,
재밌기도 했다.
float distance = DistanceToTarget();
Vector2 direction = DirectionToTarget();
isAttack = false;
if (distance <= followRange)
{
lookDirection = direction;
if(distance < weaponHandler.AttackRange)
{
int layermaskTarget = weaponHandler.target;
RaycastHit2D hit = Physics2D.Raycast(transform.position, direction, weaponHandler.AttackRange * 1.5f, (1 << LayerMask.NameToLayer("Level")) | layermaskTarget);
if(hit.collider != null && layermaskTarget == (layermaskTarget | (1 << hit.collider.gameObject.layer)))
{
isAttack = true;
}
movementDirection = Vector2.zero;
return;
}
movementDirection = direction;
}
위의 코드를 통해 몬스터의 공격을 판단하게 된다.
우선 플레이어와 몬스터의 거리가 사정거리 안에 있어야 되고
미리 구해놓은 값들과 몬스터가 들고 있는 무기의 사정거리를 이용해
RaycastHit2D를 사용하였다.
hit.collider 가 해당 조건에 맞으면 isAttack이 true가 된다.
baseController에 있는 메서드에서 isAttack이 true가 되었기 때문에
Attack 메서드를 호출하고 공격 행동을 하게 된다.

개인적으로 따라하기도 너무 어려웠다...
이제 개인과제를 해야되는데 벌써 머리가 아프다