GodotのTweenは他の言語やライブラリでもよくあるように、いちいち細かい処理を書かなくてもパラメータを指定するだけでアニメーションを行ってくれるもの。Cocos2dxでいうアクションみたいなもの。それの実際の使い方をいくつかメモ。
よく見かける例だとシーンに配置されているTweenを使っている物が多いので、その都度dynamicallyにTweenを使う方法。
移動したりサイズを変えたりというパラメータを変動させるタイプのTweenはinterpolate_property
というメソッドを使う。例えば下記のような感じ。
var tween = Tween.new()
tween.interpolate_property(node,
'position',
Vector2(0, 0),
Vector2(100, 100),
10,
Tween.TRANS_LINEAR,
Tween.EASE_IN_OUT)
tween.start()
scene.add_child(tween)
この例だとnodeを10秒かけて座標(0, 0)から(100, 100)に一定の速度で移動させるアニメーションを実行する、というもの。動的に作る場合の注意点としてTween自体もシーンにadd_childしておく必要がある。しないと多分そのまま消えてしまって何も起こらない。アニメーションするnodeに入れる形でも大丈夫。
連続してアクションを行いたい場合はTweenを作るわけではなく続けて必要な分だけinterpolate_property等を呼び出せばいい。
Tweenでアニメーションした後に例えばそのNodeを削除したりなど、特定の処理を実行させることも出来る。その場合はinterpolate_callback
というメソッドを使う。例えば下記のような感じ。
var tween = Tween.new()
tween.interpolate_callback(self, 10, 'remove_node', node)
tween.start()
scene.add_child(tween)
func remove_node(node):
remove_child(node)
node.queue_free()
これは10秒経ったらnodeをremove_nodeというメソッドを呼んでその中で削除する、というTween。さっきの処理と合わせるとアニメーションした後に自動的に削除することが出来る。メソッド名の後には5つくらいメソッドに渡す引数を指定することが出来る。
この例だとシーン上で行っているが、実際にはnode自体のスクリプト上でやった方がシンプルだと思う。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント