SDLUdon Advent HitoriSumotori 4

3日目の記事はudnonkobillyさんによる http://d.hatena.ne.jp/udonkobilly/20131203 でした!
余裕を持って記事を書く時間を作ろうと、急いだ筈が…、みんぐー、でばぐー、二人は仲良し!
ではでは前回に増してさらりと参ります。最後に話した、タイムラインのアクションメソッド(move_by等々)に渡す4番目の引数を中心に、

イージング・シンボル

これまで何度か登場した[ move_by ]メソッドですが、全ての引数を省略しないで書くと、

move_by(x, y, duration, easing=easing_sym)

となり、第1、2引数は目標地点の座標、第3引数は目標に辿り着くまでの時間を意味しています。
なお、現在の実装においては、時間は「秒分時」ではなく、「フレーム(数)」を渡すので注意して下さいませ。
( ちなみに、[ Game.loop ] のオプションで渡した[ fps ]が60であれば1フレーム約0.0166秒(1 / 60)といった計算 )


そして、第4引数のイージングシンボルには只今、

:none , :quad, :cubic , :quart , :quint , :sin , :expo , :circ

までの種類があり、これらを渡すことで、対応した補間法を利用して、動きに様々な特徴や癖などを与えられます。
[ :none ] 以外のシンボルには、語尾に[ _out , _in_out , _out_in ]を付ける(:quad_out_in)事で、
それぞれ、「減速」,「加速からの減速」,「減速からの加速」、何も付けないと「加速」となり、速度変化の指定となります。


なお、引数に何も渡さない場合、durationには1(一気に目標まで移動)、easingには:none(等速移動)がデフォルトで渡されます。


ちなみに、「quad」であれば「quadratic」と元々の単語から短縮されており、それぞれ数学的意味を持つ単語で構成されている訳ですが、
意味や式から追うだけでなく、とにかく動かしみて、そこから身近にある動きとイメージを重ね合わせ、積極的に置き換えてみたりするのも、活用の近道。