이번 글에서는 보스의 기본 움직임 , 기본 공격을 구현한것을 정리 해보겠습니다.
먼저 보스는 일반 몬스터와 비슷하게 구현 하였지만 보스 맵을 따로 만들 계획이라서 일단 플레이어를
계속 인식하도록 만들었습니다

//플레이어 지정
public GameObject Player;
private Vector2 distance;
먼저 플레이어와 보스간의 거리가 멀다면 보스가 플레이어 쪽으로 움직이게 만들었습니다.
void Update()
{
float dist = Mathf.Abs(Player.transform.position.x - transform.position.x);
PlayerCalculation();
switch (state)
{
case BossState.idle:
Idle();
break;
case BossState.move:
Move();
break;
case BossState.attack:
Attack();
break;
}
}
private void PlayerCalculation()
{
if(state == BossState.attack ||state == BossState.downAttack)
return ;
distance.x = transform.position.x - Player.transform.position.x;
attackCollider.GetComponent<SpriteRenderer>().enabled = false;
animator.ResetTrigger("Attack");
if (distance.x < 0)
GetComponent<SpriteRenderer>().flipX = true;
else
GetComponent<SpriteRenderer>().flipX = false;
if((distance.x < scanDistance || -distance.x < scanDistance ) && state != BossState.move)
state = BossState.move;
}
Mathf.Abs(Player.transform.position.x - transform.position.x)를 이용하여
거리가 멀어지면 move로 이동이 되고 ResetTirger를 이용하여 트리거가 attack 상태가 아닌대도
애니메이션이 attack 으로 넘어가는것을 방지 하였습니다.
private void Move()
{
if (state != BossState.move)
return;
float attackDis = distance.x;
if (attackDis < 0)
attackDis = -attackDis;
if (attackDis <= attackDistance && !delayStart )
{
rb.velocity = Vector2.zero;
animator.SetBool("Walk", false);
animator.SetTrigger("Attack");
state = BossState.attack;
return;
}
animator.SetBool("Walk", true);
Vector2 direction = (Player.transform.position - transform.position).normalized;
rb.velocity = new Vector2(direction.x * moveSpeed, rb.velocity.y);
}
이 코드는 보스의 움직이게 만들어 주는 코드 입니다.
만약 플레이어야 가까워지면 state 는 attack으로 넘어갑니다.
private void Attack()
{
if (state != BossState.attack || delayStart)
return;
Vector2 offset = GetComponent<SpriteRenderer>().flipX ? rightOffset : leftOffset;
attackCollider.GetComponent<SpriteRenderer>().enabled = true;
attackCollider.transform.localPosition = offset;
}

추가적으로 보스의 크기가 크기 때문에 공격전에 빨간색 범위표시를 하였습니다
'유니티 개발 > 사이드 뷰 게임' 카테고리의 다른 글
| Unity 2D 아이템 제작 - 기본 베이스 (0) | 2025.07.20 |
|---|---|
| Unity 2D 보스 - 특수 공격 (0) | 2025.07.20 |
| Unity 2D 스킬 쿨 타임 (0) | 2025.07.19 |
| Unity 2D 스킬 구현 (0) | 2025.07.19 |
| Unity 2D 플레이어 스킬 UI 구현 (0) | 2025.07.18 |