-
Notifications
You must be signed in to change notification settings - Fork 2
develop Damageable interface
Jeon-YJ1004 edited this page Feb 27, 2023
·
2 revisions
- IDamageale.cs 인터페이스 생성
public interface IDamageable
{
public void TakeDamage(float damage);
}
- Character.cs와 Enemy.cs에서 인터페이스 상속 후 오버라이드 함수 작성 => 이후 무기 클래스에서 적에게 ApplyDamage할 때 아래와 같이 사용 가능. 적과 맵 오브젝트 둘다 적용하는 코드
2.1 이전 코드의 OnTriggerEnter2D에서 무기 태그를 확인하고 무기의 공격력을 가져오는 작업이 필요 없음!
void OnCollisionStay2D(Collider2D col)
{
if (col.gameObject == target) Attack();
}
void Attack() {
if (targetCharacter == null)
{
targetCharacter = target.GetComponent<Character>();
}
targetCharacter.TakeDamage(enemyData.power);
}
public void TakeDamage(float damage)
{
health -= damage;
if (health > 0)
{
StartCoroutine(KnockBack());
anim.SetTrigger("Hit");
Debug.Log("Hit");
}
else
{
isLive = false;
coll.enabled = false;
rb.simulated = false;
spriter.sortingOrder = 1;
anim.SetBool("Dead", true);
GameManager.instance.kill++;
GameManager.instance.exp += enemyData.Xp;
Dead();
}
}
- DestructableObject.cs에서 인터페이스 상속 후 오버라이드 함수 작성