public string FindAttatchPoint() { var childrenTransformGroup = GetComponentsInChildren <Transform>(); var lFlags = K514MathManager.PowByte(2, (uint)AttachPointType.Count) - 1; var lAttatchPoint = new Transform[(int)AttachPointType.Count]; foreach (var i in childrenTransformGroup) { if (lFlags == 0) { break; } for (var j = 0; j < lAttatchPoint.Length; j++) { var lShift = 1 << j; if ((lFlags & lShift) == lShift && i.name.Contains(((AttachPointType)j).ToString())) { lAttatchPoint[j] = i; lFlags ^= lShift; } } } AttachPoint = lAttatchPoint; return(lFlags == 0 ? "Find Complete Successfully" : "Find End Incompletely, Move mouse"); }
public Projectile SetChaser(float p_Duration, Vector3 p_ChaseTarget, Action <CommomActionArgs, ProjectileAnimationEventArgs> p_InitAction = null, Action <CommomActionArgs, ProjectileAnimationEventArgs> p_ExpiredAction = null , Func <float, float, float, float, float> p_LerpFunction = null) { p_ExpiredAction += (customArgs, projectileAnimationEventArgs) => { var proj = (Projectile)customArgs.MorphObject; var cnt = projectileAnimationEventArgs.NumberToReadQueue; while (cnt > 0) { proj._moveActionSequenceValueSet.RemoveAt(0); cnt--; } }; SetEnqueuePoint(p_ChaseTarget) .SetUpdateAction((customArgs, projectileAnimationEventArgs, lerpFunction) => { var proj = (Projectile)customArgs.MorphObject; var elapsed = proj._currentMoveActionCumulativeTime - ElapsedTime; var reversedDuration = 1f / proj._currentMoveAction.AnimationDuration; if (p_LerpFunction == null) { return(K514MathManager.LinearLerp(proj.Transform.position, proj._moveActionSequenceValueSet[0], elapsed, reversedDuration)); } else { var p_From = proj.Transform.position; var p_To = proj._moveActionSequenceValueSet[0]; var distance = p_To - p_From; return(new Vector3( p_LerpFunction(p_From.x, distance.x, elapsed, reversedDuration), p_LerpFunction(p_From.y, distance.y, elapsed, reversedDuration), p_LerpFunction(p_From.z, distance.z, elapsed, reversedDuration) )); } } , p_Duration , 1 , false , p_InitAction , p_ExpiredAction , p_LerpFunction); return(this); }
public Projectile SetChaser(float p_Duration, Transform p_ChaseTarget, Action <CommomActionArgs, ProjectileAnimationEventArgs> p_InitAction = null, Action <CommomActionArgs, ProjectileAnimationEventArgs> p_ExpiredAction = null , Func <float, float, float, float, float> p_LerpFunction = null) { SetChaseTarget(p_ChaseTarget). SetUpdateAction((customArgs, projectileAnimationEventArgs, lerpFunction) => { var proj = (Projectile)customArgs.MorphObject; var elapsed = proj._currentMoveActionCumulativeTime - ElapsedTime; var reversedDuration = 1f / proj._currentMoveAction.AnimationDuration; if (p_LerpFunction == null) { return(K514MathManager.LinearLerp(proj.Transform.position, proj._chasingTarget.position, elapsed, reversedDuration)); } else { var p_From = proj.Transform.position; var p_To = proj._chasingTarget.position; var distance = p_To - p_From; return(new Vector3( p_LerpFunction(p_From.x, distance.x, elapsed, reversedDuration), p_LerpFunction(p_From.y, distance.y, elapsed, reversedDuration), p_LerpFunction(p_From.z, distance.z, elapsed, reversedDuration) )); } } , p_Duration , 0 , false , p_InitAction , p_ExpiredAction , p_LerpFunction); return(this); }
public Projectile SetBezierChaseEnemy(int pPointNumber, Transform p_Target, float p_Duration, Action <CommomActionArgs, ProjectileAnimationEventArgs> p_InitAction = null, Action <CommomActionArgs, ProjectileAnimationEventArgs> p_ExpiredAction = null, Func <float, float, float, float, float> p_LerpFunction = null) { p_ExpiredAction += (customArgs, projectileAnimationEventArgs) => { var proj = (Projectile)customArgs.MorphObject; var cnt = projectileAnimationEventArgs.NumberToReadQueue; while (cnt > 0) { proj._moveActionSequenceValueSet.RemoveAt(0); cnt--; } }; SetChaseTarget(p_Target). SetUpdateAction((customArgs, projectileAnimationEventArgs, lerpFunction) => { var proj = (Projectile)customArgs.MorphObject; var elapsed = proj._currentMoveActionCumulativeTime - ElapsedTime; var reversedDuration = 1f / proj._currentMoveAction.AnimationDuration; var stepSize = projectileAnimationEventArgs.NumberToReadQueue; for (var i = 0; i < stepSize; i++) { proj.CopiedBezierPointSet[i] = proj._moveActionSequenceValueSet[i]; } if (lerpFunction == null) { for (int j = stepSize; j > 0; j--) { for (int i = 0; i < j; i++) { if (i != j - 1) { proj.CopiedBezierPointSet[i].x = K514MathManager.ReverseLinearLerp( proj.CopiedBezierPointSet[i].x, proj.CopiedBezierPointSet[i + 1].x - proj.CopiedBezierPointSet[i].x, elapsed, reversedDuration); proj.CopiedBezierPointSet[i].y = K514MathManager.ReverseLinearLerp( proj.CopiedBezierPointSet[i].y, proj.CopiedBezierPointSet[i + 1].y - proj.CopiedBezierPointSet[i].y, elapsed, reversedDuration); proj.CopiedBezierPointSet[i].z = K514MathManager.ReverseLinearLerp( proj.CopiedBezierPointSet[i].z, proj.CopiedBezierPointSet[i + 1].z - proj.CopiedBezierPointSet[i].z, elapsed, reversedDuration); } else { proj.CopiedBezierPointSet[i].x = K514MathManager.ReverseLinearLerp( proj.CopiedBezierPointSet[i].x, proj._chasingTarget.position.x - proj.CopiedBezierPointSet[i].x, elapsed, reversedDuration); proj.CopiedBezierPointSet[i].y = K514MathManager.ReverseLinearLerp( proj.CopiedBezierPointSet[i].y, proj._chasingTarget.position.y - proj.CopiedBezierPointSet[i].y, elapsed, reversedDuration); proj.CopiedBezierPointSet[i].z = K514MathManager.ReverseLinearLerp( proj.CopiedBezierPointSet[i].z, proj._chasingTarget.position.z - proj.CopiedBezierPointSet[i].z, elapsed, reversedDuration); } } } } else { for (int j = stepSize; j > 0; j--) { for (int i = 0; i < j; i++) { if (i != j - 1) { proj.CopiedBezierPointSet[i].x = lerpFunction( proj.CopiedBezierPointSet[i].x, proj.CopiedBezierPointSet[i + 1].x - proj.CopiedBezierPointSet[i].x, elapsed, reversedDuration); proj.CopiedBezierPointSet[i].y = lerpFunction( proj.CopiedBezierPointSet[i].y, proj.CopiedBezierPointSet[i + 1].y - proj.CopiedBezierPointSet[i].y, elapsed, reversedDuration); proj.CopiedBezierPointSet[i].z = lerpFunction( proj.CopiedBezierPointSet[i].z, proj.CopiedBezierPointSet[i + 1].z - proj.CopiedBezierPointSet[i].z, elapsed, reversedDuration); } else { proj.CopiedBezierPointSet[i].x = lerpFunction( proj.CopiedBezierPointSet[i].x, proj._chasingTarget.position.x - proj.CopiedBezierPointSet[i].x, elapsed, reversedDuration); proj.CopiedBezierPointSet[i].y = lerpFunction( proj.CopiedBezierPointSet[i].y, proj._chasingTarget.position.y - proj.CopiedBezierPointSet[i].y, elapsed, reversedDuration); proj.CopiedBezierPointSet[i].z = lerpFunction( proj.CopiedBezierPointSet[i].z, proj._chasingTarget.position.z - proj.CopiedBezierPointSet[i].z, elapsed, reversedDuration); } } } } return(proj.CopiedBezierPointSet[0]); } , p_Duration , pPointNumber , false , p_InitAction , p_ExpiredAction , p_LerpFunction ); return(this); }