1
This commit is contained in:
92
unity/Assets/Script/CombaSyatem/CombatAblilityBase.cs
Normal file
92
unity/Assets/Script/CombaSyatem/CombatAblilityBase.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user