void Sink() { var delay = DelayAction.Create(0.5f); var disableSwing = CallFuncAction.Create(() => { _swingEnabled = false; }); var move = MoveAction.MoveBy(new Vector3(0, -sinkDelta, 0), 0.5f, Ease.SineIn); var fadeOut = FadeAction.RecursiveFadeOut(0.5f); gameObject.Play(SequenceAction.Create(delay, disableSwing, ParallelAction.ParallelAll(move, fadeOut)), () => { SelfDestroy(); }); }
void Unsink() { gameObject.SetAlpha(0, true); Vector3 position = transform.position; position.y -= sinkDelta; var delay = DelayAction.Create(0.05f); var setPosition = SetPositionAction.Create(position); var move = MoveAction.MoveBy(new Vector3(0, sinkDelta, 0), 0.5f, Ease.SineOut); var fadeIn = FadeAction.RecursiveFadeIn(0.5f); gameObject.Play(SequenceAction.Create(delay, setPosition, ParallelAction.ParallelAll(move, fadeIn)), () => { _swingEnabled = true; }); }