90 lines
2.1 KiB
C#
90 lines
2.1 KiB
C#
|
using Games.LogicObj;
|
|||
|
using GCGame.Table;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
public abstract class ImpactEffectBase
|
|||
|
{
|
|||
|
//已经有在 EffectLogic 中分类型,这里直接使用
|
|||
|
public abstract EffectLogic.EffectType ImpactEffectType { get; }
|
|||
|
protected int bodyPart = -1; //主要用来区分 身体 左武器 右武器等 使用ModelPart常量
|
|||
|
protected bool isRunning; // false表示处于延迟状态
|
|||
|
public Tab_Effect Data { get; private set; }
|
|||
|
public bool Overly = false;
|
|||
|
protected float startTime;
|
|||
|
|
|||
|
protected float endTime;
|
|||
|
public float _EndTime
|
|||
|
{
|
|||
|
get { return endTime; }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// effect表中的部位转化到ObjMatManager中的ModelPart数值
|
|||
|
/// </summary>
|
|||
|
protected static int BodyToModelPart(int source)
|
|||
|
{
|
|||
|
return source + ModelPart.body;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 获得状态的持续时间比例
|
|||
|
/// </summary>
|
|||
|
protected float GetEffectTimeRatio()
|
|||
|
{
|
|||
|
return Mathf.Clamp01((Time.time - startTime) / Data.Duration);
|
|||
|
}
|
|||
|
|
|||
|
protected Obj objCharacter;
|
|||
|
|
|||
|
public virtual void SetPart(int part)
|
|||
|
{
|
|||
|
bodyPart = part;
|
|||
|
}
|
|||
|
|
|||
|
public virtual int GetPart()
|
|||
|
{
|
|||
|
return bodyPart;
|
|||
|
}
|
|||
|
|
|||
|
public virtual void InitData(Tab_Effect effectData, Obj obj, float overrideDuration = -1f)
|
|||
|
{
|
|||
|
Data = effectData;
|
|||
|
objCharacter = obj;
|
|||
|
startTime = Time.time + Data.DelayTime;
|
|||
|
if (overrideDuration < 0f)
|
|||
|
endTime = Data.Duration < 0 ? float.PositiveInfinity : startTime + Data.Duration;
|
|||
|
else
|
|||
|
endTime = startTime + overrideDuration;
|
|||
|
}
|
|||
|
|
|||
|
public virtual void StartEffect()
|
|||
|
{
|
|||
|
isRunning = true;
|
|||
|
}
|
|||
|
|
|||
|
public virtual void StopEffect()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
public bool OnUpdate()
|
|||
|
{
|
|||
|
var result = true;
|
|||
|
if (!isRunning)
|
|||
|
{
|
|||
|
if (Time.time > startTime)
|
|||
|
StartEffect();
|
|||
|
}
|
|||
|
if (isRunning)
|
|||
|
{
|
|||
|
if (Time.time > endTime)
|
|||
|
result = false;
|
|||
|
else
|
|||
|
UpdateInherited();
|
|||
|
}
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
protected virtual void UpdateInherited()
|
|||
|
{
|
|||
|
}
|
|||
|
}
|