using UnityEngine; namespace Game { public class ClipEffect : TimelineClipBase { private EffectClip _mRealAsset; public override void OnEnter() { _mRealAsset = Asset as EffectClip; var duration = EndTime - StartTime; var castDir = Owner.skill.CastDir; castDir = new Vector3(castDir.x, 0, castDir.z);//忽略y var toGridSize = 16f / 64f; var isRight = Owner.move.IsRight; var rotf = Util.Vec3ToRot(castDir); foreach (var item in _mRealAsset.template.EffectInfos) { var targetEntity = 0; var isSpeedIgnore = item.isSpeedIgnore; var rot = Quaternion.FromToRotation(Vector3.right, castDir); var posAdd = rot * (item.offset * toGridSize); var pos = Owner.view.PositionView + posAdd; if (item.isGround) { pos = Owner.move.Position + posAdd; pos = new Vector3(pos.x, 0, pos.z); } if (item.isAttach) { targetEntity = Owner.ID(); } var rotFinal = GameRandom.RandomRot(rotf + item.rotAdd, item.rotAddRandom); if (item.Effect != null) { Util.CastEffect(item.Effect, pos, rotFinal, targetEntity, isSpeedIgnore ? 0 : duration, item.isAttach); } else { Util.Print("ClipEffect特效释放失败:未配置特效"); } } } public override void OnStay() { } public override void OnLeave() { } } }