Skip to content

Latest commit

 

History

History
75 lines (65 loc) · 2.03 KB

공격 판정 및 데미지 시스템 개발.md

File metadata and controls

75 lines (65 loc) · 2.03 KB

1. 무기에 Collider 설정

  • 무기에 BoxCollider 설정

  • 실제 무기보다 조금 크게 설정하여 데미지 영역을 보정 image

  • Is Trigger도 활성화 해준다
    image

2. event를 사용하여 구현

Player Script

  • delegate 선언
public delegate void AttackEventHandler(float damage);
  • event를 통해 외부에서 호출하지 못하게 설정
/// <summary>
/// Attack Call Back
/// </summary>
public event AttackEventHandler attackEventHandler;
  • event를 호출하고 null로 세팅해 기존 내용을 삭제한다
/// <summary>
/// 이벤트 메소드들을 호출한다
/// </summary>
void CallEventHandlerMethods()
{
    // 공격 콜백
    if (attackEventHandler != null)
    {
        attackEventHandler(damage);
        attackEventHandler = null;
    }
}

Weapon에 부착된 Script

  • TriggerEnter를 이용
  • 공격에 맞은 객체에 적용 되어야 할 메소드를 Player Event Handler에 추가한다
private void OnTriggerEnter(Collider other)
{
    if (other.CompareTag(Helper.TagDictionary.GetTagName(Helper.TagDictionary.ETag.Enemy)))
    {
        Enemy enemy = other.GetComponent<Enemy>();
        player.attackEventHandler += enemy.Hit;
    }
}
  • enemy.Hit에 해당하는 메소드
public void Hit(float damage)
{
    hp -= damage;

    if (hp <= 0)
    {
        Helper.Debug.Log("적 죽음");
    }
    else
        Helper.Debug.Log($"남은 HP: {hp}");
}

3. 결과

  • 3번 째 공격에 적 캐릭터를 뚫고 지나가 적용이 안되었다 😥
AttackSystem.mp4