Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

プロパティアニメーション

数値型(numbersvector3vector4、クォータニオン)のすべてのプロパティ(property)とシェーダー定数(shader constant)は、組み込みのアニメーションシステムで go.animate() 関数を使ってアニメーション化できます。エンジンは、指定した再生モードとイージング(easing)関数に従ってプロパティを自動的に「補間(tween)」します。独自のイージング関数を指定することもできます。

プロパティアニメーション バウンスのループ

プロパティアニメーション

ゲームオブジェクト(game object)やコンポーネント(component)のプロパティをアニメーション化するには、go.animate() 関数を使います。GUI ノード(GUI node)のプロパティに対応する関数は gui.animate() です。

-- Set the position property y component to 200
go.set(".", "position.y", 200)
-- Then animate it
go.animate(".", "position.y", go.PLAYBACK_LOOP_PINGPONG, 100, go.EASING_OUTBOUNCE, 2)

指定したプロパティのアニメーションをすべて停止するには、go.cancel_animations() を呼び出します。GUI ノードの場合は gui.cancel_animations() を呼び出します。

-- Stop euler z rotation animation on the current game object
go.cancel_animations(".", "euler.z")

position のように複数の成分からなるプロパティのアニメーションをキャンセルすると、その各成分(position.xposition.yposition.z)のアニメーションもすべてキャンセルされます。

プロパティのマニュアルには、ゲームオブジェクト、コンポーネント、GUI ノードで利用できるすべてのプロパティが記載されています。

GUI ノードのプロパティアニメーション

GUI ノードのほぼすべてのプロパティをアニメーション化できます。たとえば、ノードの color プロパティを完全に透明に設定して見えなくし、その後、色を白(色調を変えない色)にアニメーション化してフェードインさせることができます。

local node = gui.get_node("button")
local color = gui.get_color(node)
-- Animate the color to white
gui.animate(node, gui.PROP_COLOR, vmath.vector4(1, 1, 1, 1), gui.EASING_INOUTQUAD, 0.5)
-- Animate the outline red color component
gui.animate(node, "outline.x", 1, gui.EASING_INOUTQUAD, 0.5)
-- And move to x position 100
gui.animate(node, hash("position.x"), 100, gui.EASING_INOUTQUAD, 0.5)

完了コールバック

プロパティアニメーション関数 go.animate()gui.animate() では、最後の引数に Lua コールバック(callback)関数を任意で指定できます。この関数は、アニメーションが最後まで再生されたときに呼び出されます。ループするアニメーションでは呼び出されず、go.cancel_animations() または gui.cancel_animations() でアニメーションを手動でキャンセルした場合にも呼び出されません。このコールバックを使うと、アニメーションの完了時にイベントを発生させたり、複数のアニメーションを連続して実行したりできます。

イージング

イージングは、アニメーション化する値が時間の経過とともにどのように変化するかを定義します。以下の画像は、イージングを実現するために時間に応じて適用される関数を示しています。

go.animate() で使えるイージングの値は次のとおりです。

go.EASING_LINEAR  
go.EASING_INBACK go.EASING_OUTBACK
go.EASING_INOUTBACK go.EASING_OUTINBACK
go.EASING_INBOUNCE go.EASING_OUTBOUNCE
go.EASING_INOUTBOUNCE go.EASING_OUTINBOUNCE
go.EASING_INELASTIC go.EASING_OUTELASTIC
go.EASING_INOUTELASTIC go.EASING_OUTINELASTIC
go.EASING_INSINE go.EASING_OUTSINE
go.EASING_INOUTSINE go.EASING_OUTINSINE
go.EASING_INEXPO go.EASING_OUTEXPO
go.EASING_INOUTEXPO go.EASING_OUTINEXPO
go.EASING_INCIRC go.EASING_OUTCIRC
go.EASING_INOUTCIRC go.EASING_OUTINCIRC
go.EASING_INQUAD go.EASING_OUTQUAD
go.EASING_INOUTQUAD go.EASING_OUTINQUAD
go.EASING_INCUBIC go.EASING_OUTCUBIC
go.EASING_INOUTCUBIC go.EASING_OUTINCUBIC
go.EASING_INQUART go.EASING_OUTQUART
go.EASING_INOUTQUART go.EASING_OUTINQUART
go.EASING_INQUINT go.EASING_OUTQUINT
go.EASING_INOUTQUINT go.EASING_OUTINQUINT

gui.animate() で使えるイージングの値は次のとおりです。

gui.EASING_LINEAR  
gui.EASING_INBACK gui.EASING_OUTBACK
gui.EASING_INOUTBACK gui.EASING_OUTINBACK
gui.EASING_INBOUNCE gui.EASING_OUTBOUNCE
gui.EASING_INOUTBOUNCE gui.EASING_OUTINBOUNCE
gui.EASING_INELASTIC gui.EASING_OUTELASTIC
gui.EASING_INOUTELASTIC gui.EASING_OUTINELASTIC
gui.EASING_INSINE gui.EASING_OUTSINE
gui.EASING_INOUTSINE gui.EASING_OUTINSINE
gui.EASING_INEXPO gui.EASING_OUTEXPO
gui.EASING_INOUTEXPO gui.EASING_OUTINEXPO
gui.EASING_INCIRC gui.EASING_OUTCIRC
gui.EASING_INOUTCIRC gui.EASING_OUTINCIRC
gui.EASING_INQUAD gui.EASING_OUTQUAD
gui.EASING_INOUTQUAD gui.EASING_OUTINQUAD
gui.EASING_INCUBIC gui.EASING_OUTCUBIC
gui.EASING_INOUTCUBIC gui.EASING_OUTINCUBIC
gui.EASING_INQUART gui.EASING_OUTQUART
gui.EASING_INOUTQUART gui.EASING_OUTINQUART
gui.EASING_INQUINT gui.EASING_OUTQUINT
gui.EASING_INOUTQUINT gui.EASING_OUTINQUINT

線形補間 バックのイーズイン バックのイーズアウト バックのイーズイン・アウト バックのイーズアウト・イン バウンスのイーズイン バウンスのイーズアウト バウンスのイーズイン・アウト バウンスのイーズアウト・イン エラスティックのイーズイン エラスティックのイーズアウト エラスティックのイーズイン・アウト エラスティックのイーズアウト・イン サインのイーズイン サインのイーズアウト サインのイーズイン・アウト サインのイーズアウト・イン 指数関数のイーズイン 指数関数のイーズアウト 指数関数のイーズイン・アウト 指数関数のイーズアウト・イン 円弧のイーズイン 円弧のイーズアウト 円弧のイーズイン・アウト 円弧のイーズアウト・イン 2次関数のイーズイン 2次関数のイーズアウト 2次関数のイーズイン・アウト 2次関数のイーズアウト・イン 3次関数のイーズイン 3次関数のイーズアウト 3次関数のイーズイン・アウト 3次関数のイーズアウト・イン 4次関数のイーズイン 4次関数のイーズアウト 4次関数のイーズイン・アウト 4次関数のイーズアウト・イン 5次関数のイーズイン 5次関数のイーズアウト 5次関数のイーズイン・アウト 5次関数のイーズアウト・イン

カスタムイージング

一連の値を持つ vector を定義し、上記の定義済みイージング定数の代わりにそのベクトルを渡すと、独自のイージングカーブを作成できます。ベクトルの値は、開始値(0)から目標値(1)までのカーブを表します。ランタイムはベクトルから値をサンプリングし、ベクトルで表される点と点の間の値を計算するときには線形補間します。

たとえば、次のベクトルを使うと、

local values = { 0, 0.4, 0.2, 0.2, 0.5, 1 }
local my_easing = vmath.vector(values)

以下のカーブになります。

独自のカーブ

次の例では、矩形波のカーブに従って、ゲームオブジェクトの y 位置が現在の位置と 200 の間で切り替わります。

local values = { 0, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 1,
                 0, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 1,
                 0, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 1,
                 0, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 1 }
local square_easing = vmath.vector(values)
go.animate("go", "position.y", go.PLAYBACK_LOOP_PINGPONG, 200, square_easing, 2.0)

矩形波のカーブ