63 lines
1.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public abstract class CharacterBase : MonoBehaviour
{
[Header("기본 능력치")]
public string characterName; // 이름
public int maxHP = 100; // 최대 체력
public int currentHP; // 현재 체력
public float attackPower = 10f; // 공격력
public float defensePower = 5f; // 방어력
public float moveSpeed = 5f; // 이동 속도
public float gravity = -9.81f; // 중력
[Header("상태 이상")]
public List<StatusEffect> statusEffects = new List<StatusEffect>();
protected virtual void Start()
{
currentHP = maxHP;
}
public virtual void TakeDamage(float damage)
{
float actualDamage = Mathf.Max(0, damage - defensePower);
currentHP -= Mathf.RoundToInt(actualDamage);
Debug.Log($"{characterName}이 {actualDamage}의 피해를 입었습니다. 현재 체력: {currentHP}");
if (currentHP <= 0)
{
Die();
}
}
public virtual void Die()
{
Debug.Log($"{characterName}이 사망했습니다.");
// TODO: 사망 처리
}
// 상태이상 추가 메서드
public virtual void AddStatusEffect(StatusEffect effect)
{
statusEffects.Add(effect);
// TODO: 상태이상 처리 로직 추가
}
}
public abstract class StatusEffect
{
// 받는 피해 증가
// 주는 피해 감소
// 느려짐
// 기절
// 넉백
public string effectName;
public float duration;
public virtual void ApplyEffect(CharacterBase target) {}
public virtual void RemoveEffect(CharacterBase target) {}
}