Practice_Unity/Assets/Scripts/Contents/Status.cs
Seonkyu.kim 886822a545 작업
1. 적 <-> 플레이어 공격해서 값 체력깎기 기능 추가
2. 적 죽으면(explore)시 정해진 양만큼의 경험치 큐브 생성
  - but 아직 1과 연동해서 공격해서 피 깎아서 죽는건 아직 아님
3. 경험치 큐브 범위내에 있으면 당기기 기능 추가
4. 경험치 큐브 캐릭터 최근접 범위에 닿으면 흡수하기 기능 추가
5. 경험치 획득시 레벨업 기능 추가
6. UI 경험치 바 화면에 구현
7. UI 경험치 바 플레이어 정보의 경험치와 연계

Todo
1. UI 다른 요소들 죄다 UIManaer로 이동
2. 몬스터 공격해서 에너지 덩어리로 바꾸는 동작 추가
3. 레벨업시 레벨 화면 표기
4. 몬스터가 캐릭터에게 다가오는 동작 추가
5. 투사체 공격 기능 추가
2025-10-01 17:56:13 +09:00

127 lines
3.4 KiB
C#

using System;
using UnityEngine;
public abstract class Status : MonoBehaviour
{
// 자식 클래스가 반드시 구현해야 할 프로퍼티(속성)들입니다.
public abstract int Level { get; }
public abstract float Hp { get; }
public abstract float MaxHp { get; }
public abstract float Mp { get; }
public abstract float MaxMp { get; }
public abstract float Attack { get; }
public abstract float Defense { get; }
public abstract float MoveSpeed { get; }
public abstract float AtkSpeed { get; }
public abstract float ApplyDamage(float damage);
}
/*public class Status : MonoBehaviour
{
[SerializeField]
protected Data_Status _data;
public virtual Data_Status Data
{
get { return _data; }
set { _data = value; Init(); }
}
protected int _hp;
protected int _mp;
public int Hp { get {return _hp;} set {_hp = value;} }
public int Mp { get {return _mp;} set {_mp = value;} }
public int Level => _data != null ? _data.level : 1;
public int MaxHp => _data != null ? _data.maxHp : 100;
public int MaxMp => _data != null ? _data.maxMp : 100;
public float Attack => _data != null ? _data.attack : 10f;
public float Defense => _data != null ? _data.defense : 5f;
public float MoveSpeed => _data != null ? _data.moveSpeed : 3f;
public float AtkSpeed => _data != null ? _data.atkSpeed : 1f;
protected virtual void OnValidate()
{
if (_data != null) Init();
}
public virtual void Init()
{
Hp = MaxHp;
Mp = MaxMp;
}
}
/*
[SerializeField]
protected int _level;
[SerializeField]
protected int _hp;
[SerializeField]
protected int _maxHp;
[SerializeField]
protected int _mp;
[SerializeField]
protected int _maxMp;
[SerializeField]
protected int _attack;
[SerializeField]
protected int _defense;
[SerializeField]
protected float _moveSpeed;
[SerializeField]
protected float _atkSpeed;
public int Level { get { return _level; } set { _level = value; } }
public int Hp { get { return _hp; } set { _hp = value; } }
public int MaxHp { get { return _maxHp; } set { _maxHp = value; } }
public int Mp { get { return _mp; } set { _mp = value; } }
public int MaxMp { get { return _maxMp; } set { _maxMp = value; } }
public int Attack { get { return _attack; } set { _attack = value; } }
public int Defense { get { return _defense; } set { _defense = value; } }
public float MoveSpeed { get { return _moveSpeed; } set { _moveSpeed = value; } }
public float AtkSpeed { get { return _atkSpeed; } set { _atkSpeed = value; } }
public virtual void Init(Status status)
{
Level = status.Level;
Hp = status.Hp;
MaxHp = status.MaxHp;
Mp = status.Mp;
MaxMp = status.MaxMp;
Attack = status.Attack;
Defense = status.Defense;
MoveSpeed = status.MoveSpeed;
AtkSpeed = status.AtkSpeed;
}
public virtual void CopyFrom(Status source)
{
Level = source.Level;
Hp = source.Hp;
MaxHp = source.MaxHp;
Mp = source.Mp;
MaxMp = source.MaxMp;
Attack = source.Attack;
Defense = source.Defense;
MoveSpeed = source.MoveSpeed;
AtkSpeed = source.AtkSpeed;
}
}
*/