public override IAbilityObject Execute(DashObject t) { CollisionChecker cc = t.transform.gameObject.GetComponent <CollisionChecker>() as CollisionChecker; if (!isDashing && unlocked && (Utils.GetUnixTime() - coolDownTime) > cooldown) { float dash = cc.GetDistanceUntilCollision(t.direction, dashDistance); //float dash = (t.direction == Direction.RIGHT) ? temp_dist : temp_dist * -1; currentPosition = t.transform.localPosition; Vector3 position = t.transform.localPosition; position.x += dash; finalPosition = position; counter = 5; interval = dash / counter; isDashing = true; timer = new System.Timers.Timer(); timer.Interval = 10; timer.Elapsed += UpdateDash; timer.Enabled = true; } return(t); }