Files
Northbound/Assets/Scripts/MonsterDataComponent.cs
2026-02-16 22:17:37 +09:00

60 lines
1.7 KiB
C#

using Northbound.Data;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.AI;
namespace Northbound
{
[RequireComponent(typeof(EnemyUnit))]
[RequireComponent(typeof(EnemyAIController))]
[RequireComponent(typeof(NavMeshAgent))]
[RequireComponent(typeof(NetworkObject))]
public class MonsterDataComponent : MonoBehaviour
{
[Header("Data Reference")]
[Tooltip("ScriptableObject containing monster data")]
public MonsterData monsterData;
[Header("Auto-Apply Settings")]
[Tooltip("Automatically apply stats from monsterData on Awake")]
public bool autoApplyOnAwake = true;
private void Awake()
{
if (autoApplyOnAwake && monsterData != null)
{
ApplyMonsterData();
}
}
public void ApplyMonsterData()
{
if (monsterData == null)
{
return;
}
EnemyUnit enemyUnit = GetComponent<EnemyUnit>();
if (enemyUnit != null)
{
enemyUnit.maxHealth = monsterData.maxHp;
}
EnemyAIController aiController = GetComponent<EnemyAIController>();
if (aiController != null)
{
aiController.moveSpeed = monsterData.moveSpeed;
aiController.attackDamage = monsterData.atkDamage;
aiController.attackRange = monsterData.atkRange;
aiController.attackInterval = monsterData.atkIntervalSec;
}
NavMeshAgent navAgent = GetComponent<NavMeshAgent>();
if (navAgent != null)
{
navAgent.speed = monsterData.moveSpeed;
}
}
}
}