93 lines
2.7 KiB
C#
93 lines
2.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public enum AblityClass
|
|
{
|
|
MelleeAttack,
|
|
YuanChenAttack
|
|
}
|
|
public abstract class CombatAblilityBase : ScriptableObject
|
|
{
|
|
[SerializeField, Header("技能名称")] protected string abilityName;
|
|
[SerializeField, Header("技能ID")] protected int abilityID;
|
|
[SerializeField, Header("技能CD")] protected float abilityCDTime;
|
|
[SerializeField, Header("技能类型")] protected AblityClass abilityClass;
|
|
[SerializeField, Header("技能音效")] protected AudioClip abilityVFX;
|
|
|
|
[SerializeField, Header("技能可用")] protected bool abilityIsDone;
|
|
[SerializeField, Header("技能释放距离")] protected float abilityDistance;
|
|
|
|
[SerializeField, Header("技能个数")] protected int maxAbilityCount=0;
|
|
protected int currentAbilityCount = 0;
|
|
|
|
[SerializeField, Header("技能释放偏移")] protected List<Vector2> abilityOffest;
|
|
|
|
|
|
private Transform pollName;
|
|
|
|
protected BossAI ai;
|
|
protected Animator _animator;
|
|
public abstract void UpdateAblity(Transform target=null);
|
|
|
|
public void UseAblity(CombatAblilityBase ablility)
|
|
{
|
|
pollName = GameObject.Find("TimerRoot").transform;
|
|
abilityIsDone = false;
|
|
//开始计时
|
|
string timerPath = "Perfab/Timer";
|
|
GameObject timer = Resloader.Load<GameObject>(timerPath);//寻找预制体
|
|
|
|
GameObject go = Instantiate(timer, pollName);
|
|
if(ablility.abilityClass==AblityClass.MelleeAttack)
|
|
{
|
|
go.GetComponent<Timer>().CreateTime(ablility.GetAbliltyCD(), () => ablility.abilityIsDone = true, false);
|
|
}
|
|
else if (ablility.abilityClass == AblityClass.YuanChenAttack)
|
|
{
|
|
go.GetComponent<Timer>().CreateTime(ablility.GetAbliltyCD(), () => { ablility.abilityIsDone = true;
|
|
ablility.currentAbilityCount = maxAbilityCount;
|
|
}, false);
|
|
}
|
|
}
|
|
public void Init(BossAI boss,Animator ani)
|
|
{
|
|
ai = boss;
|
|
_animator = ani;
|
|
abilityIsDone = true;
|
|
currentAbilityCount = maxAbilityCount;
|
|
}
|
|
public bool GetAbliltyIsDone()
|
|
{
|
|
return abilityIsDone;
|
|
}
|
|
public void SetAbliltyIsDone(bool isDone)
|
|
{
|
|
abilityIsDone = isDone;
|
|
}
|
|
public AblityClass GetAbliltyClass()
|
|
{
|
|
return abilityClass;
|
|
}
|
|
public string GetAbliltyName()
|
|
{
|
|
return abilityName;
|
|
}
|
|
public float GetAbliltyCD()
|
|
{
|
|
return abilityCDTime;
|
|
}
|
|
public float GetAbliltyDis()
|
|
{
|
|
return abilityDistance;
|
|
}
|
|
public List<Vector2> GetAbliltyOffest()
|
|
{
|
|
return abilityOffest;
|
|
}
|
|
public AudioClip GetAbliltyVFX()
|
|
{
|
|
return abilityVFX;
|
|
}
|
|
}
|