using UnityEngine; using UnityEngine.Timeline; namespace Game { public class ClipThrowPosition : TimelineClipBase { private ThrowPositionClip _mRealAsset; private GameEntity target; public override void OnEnter() { _mRealAsset = Asset as ThrowPositionClip; target = Util.GetEntity(Owner.skill.ThrowTarget); SetPos(_mRealAsset.template.startPos); } public override void OnStay() { var rate = (Owner.timeline.TimePast - StartTime) / (EndTime - StartTime); var pos = Vector3.Lerp(_mRealAsset.template.startPos, _mRealAsset.template.endPos, (float)rate); SetPos(pos); } public override void OnLeave() { SetPos(_mRealAsset.template.endPos); } private void SetPos(Vector3 pos) { var relatedPos = new Vector3(pos.x * (Owner.move.IsRight ? 1 : -1), pos.y, pos.z); var targetPos = Owner.Pos() + relatedPos; target.SetPos(targetPos); } } }