private void AddObject(Vector2DF position, EasingStart start, EasingEnd end) { var heart = Engine.Graphics.CreateTexture2D("Heart.png"); var obj = new ReactiveTextureObject2D() { Texture = heart, Position = position, }; obj.SetCenterPosition(CenterPosition.CenterCenter); Engine.AddObject2D(obj); obj.OnUpdateEvent.DoEasingY(obj, position.Y + 400, start, end, 120) .Subscribe(); }
/// <summary> /// スクロールを滑らかに行うように準備します。 /// </summary> /// <param name="start">アニメーションの開始速度。</param> /// <param name="end">アニメーションの終了速度。</param> /// <param name="time">アニメーションにかける時間。</param> public void SetEasingBehaviorUp(EasingStart start, EasingEnd end, int time) { getCameraMoving_ = target => OnUpdateEvent .Select(t => camera_.Src.Position.To2DF()) .EasingVector2DF(target, EasingStart.StartRapidly2, EasingEnd.EndSlowly3, time) .Select(p => camera_.Src.ToF().WithPosition(p)); }
/// <summary> /// 要素の移動を滑らかなアニメーションで表現するように準備します。 /// </summary> /// <param name="start">アニメーションの開始速度。</param> /// <param name="end">アニメーションの終了速度。</param> /// <param name="time">アニメーションにかけるフレーム数。</param> public void SetEasingBehaviorUp(EasingStart start, EasingEnd end, int time) { GetNewItemPosition = (o, v) => OnUpdateEvent.TakeWhile(f => o.IsAlive) .Select(t => o.Position) .EasingVector2DF(v, start, end, time); }
/// <summary> /// Easingの三次方程式の項3つを求める。 /// </summary> /// <param name="s">始点の角度</param> /// <param name="e">終点の角度</param> /// <returns>項</returns> public static float[] GetEasingFunction(EasingStart s, EasingEnd e) { return GetEasingFunction((float)s, (float)e); }