public static void InvokeUnitLeap(Unit unit, LeapDirections direction) { if (onUnitLeapEvent != null) { onUnitLeapEvent(unit, direction); } }
IEnumerator TransitionRoutine(LeapDirections direction) { var speed = 1 / caster.leapDuration; var targetBlock = Level.GetBlock(caster.row, caster.line + (int)direction); var x = targetBlock.transform.position.x; var y = caster.transform.position.y; var z = caster.transform.position.z; var targetPosition = new Vector3(x, y, z); if (direction == LeapDirections.Left) { while (caster.transform.position.x > targetPosition.x) { caster.transform.position -= caster.transform.right * speed * Time.deltaTime; if (caster.transform.position.x <= targetPosition.x) { break; } yield return(null); } } else if (direction == LeapDirections.Right) { while (caster.transform.position.x < targetPosition.x) { caster.transform.position += caster.transform.right * speed * Time.deltaTime; if (caster.transform.position.x >= targetPosition.x) { break; } yield return(null); } } caster.transform.position = targetPosition; }
protected virtual void OnUnitLeap(Unit unit, LeapDirections direction) { }