|  |  |  |  | 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() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |