[Enemy] 적 기본 시스템 구현
Ultraworked with [Sisyphus](https://github.com/code-yeonggu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
68
Assets/Scripts/Enemy/EnemyData.cs
Normal file
68
Assets/Scripts/Enemy/EnemyData.cs
Normal file
@@ -0,0 +1,68 @@
|
||||
using UnityEngine;
|
||||
using Colosseum.Stats;
|
||||
|
||||
namespace Colosseum.Enemy
|
||||
{
|
||||
/// <summary>
|
||||
/// 적 캐릭터 데이터. 기본 스탯과 보상을 정의합니다.
|
||||
/// </summary>
|
||||
[CreateAssetMenu(fileName = "NewEnemyData", menuName = "Colosseum/Enemy Data")]
|
||||
public class EnemyData : ScriptableObject
|
||||
{
|
||||
[Header("기본 정보")]
|
||||
[SerializeField] private string enemyName;
|
||||
[TextArea(2, 4)]
|
||||
[SerializeField] private string description;
|
||||
[SerializeField] private Sprite icon;
|
||||
|
||||
[Header("기본 스탯")]
|
||||
[Min(1f)] [SerializeField] private float baseStrength = 10f;
|
||||
[Min(1f)] [SerializeField] private float baseDexterity = 10f;
|
||||
[Min(1f)] [SerializeField] private float baseIntelligence = 10f;
|
||||
[Min(1f)] [SerializeField] private float baseVitality = 10f;
|
||||
[Min(1f)] [SerializeField] private float baseWisdom = 10f;
|
||||
[Min(1f)] [SerializeField] private float baseSpirit = 10f;
|
||||
|
||||
[Header("이동")]
|
||||
[Min(0f)] [SerializeField] private float moveSpeed = 3f;
|
||||
[Min(0f)] [SerializeField] private float rotationSpeed = 10f;
|
||||
|
||||
[Header("전투")]
|
||||
[Min(0f)] [SerializeField] private float aggroRange = 10f;
|
||||
[Min(0f)] [SerializeField] private float attackRange = 2f;
|
||||
[Min(0f)] [SerializeField] private float attackCooldown = 1f;
|
||||
|
||||
// Properties
|
||||
public string EnemyName => enemyName;
|
||||
public string Description => description;
|
||||
public Sprite Icon => icon;
|
||||
|
||||
public float BaseStrength => baseStrength;
|
||||
public float BaseDexterity => baseDexterity;
|
||||
public float BaseIntelligence => baseIntelligence;
|
||||
public float BaseVitality => baseVitality;
|
||||
public float BaseWisdom => baseWisdom;
|
||||
public float BaseSpirit => baseSpirit;
|
||||
|
||||
public float MoveSpeed => moveSpeed;
|
||||
public float RotationSpeed => rotationSpeed;
|
||||
public float AggroRange => aggroRange;
|
||||
public float AttackRange => attackRange;
|
||||
public float AttackCooldown => attackCooldown;
|
||||
|
||||
/// <summary>
|
||||
/// CharacterStats에 기본 스탯 적용
|
||||
/// </summary>
|
||||
public void ApplyBaseStats(CharacterStats stats)
|
||||
{
|
||||
if (stats == null) return;
|
||||
|
||||
stats.Strength.BaseValue = baseStrength;
|
||||
stats.Dexterity.BaseValue = baseDexterity;
|
||||
stats.Intelligence.BaseValue = baseIntelligence;
|
||||
stats.Vitality.BaseValue = baseVitality;
|
||||
stats.Wisdom.BaseValue = baseWisdom;
|
||||
stats.Spirit.BaseValue = baseSpirit;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user