Files
JJBB/Assets/Project/Script/Player/Impact/Impact_ModelScale.cs

54 lines
1.6 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using GCGame.Table;
using Module.Log;
using UnityEngine;
/// <summary>
/// 模型缩放客户端表现效果
/// Effect.txt 表格扩展参数说明
/// Param1 :缩放开始数值
/// Param2 :缩放结束数值
/// Param3 :缩放动画时间
/// </summary>
public class Impact_ModelScale : ImpactEffectBase
{
private float _endSize;
private float _scaleTime;
private float _startSize;
public override EffectLogic.EffectType ImpactEffectType
{
get { return EffectLogic.EffectType.TYPE_SCALE; }
}
// Hack重用ChangeMatPro类型。直接添加SetRatio的接口不走Update流程来控制当前实际效果
public override void StartEffect()
{
base.StartEffect();
if (objCharacter != null && Data != null)
{
var start = Data.GetParamValuebyIndex(0);
var end = Data.GetParamValuebyIndex(1);
var time = Data.GetParamValuebyIndex(2);
_startSize = start > 0 ? start * 0.01f : 1f;
_endSize = end > 0 ? end * 0.01f : 1f;
_scaleTime = time.ToClientTime();
}
}
protected override void UpdateInherited()
{
base.UpdateInherited();
if (objCharacter != null)
if (startTime + _scaleTime < Time.time || _scaleTime <= 0f)
objCharacter.SetModelScale(_endSize);
else
objCharacter.SetModelScale(Mathf.Lerp(_startSize, _endSize, (Time.time - startTime) / _scaleTime));
}
public override void StopEffect()
{
base.StopEffect();
if (objCharacter != null)
objCharacter.ResetModelScale();
}
}