GodotにおけるTweenの活用
作成日
更新日
#ChatGPTより引用
概要
Tweenは、ノードのプロパティを 時間的に補間(スムーズに変化)させるために使われる。アニメーションプレイヤーと異なり、スクリプトから動的に制御できるため、位置・回転・スケールなどをプログラムで柔軟に制御したい場面に非常に便利。
使い方の基本構文
var tween = create_tween()
tween.tween_property(target_node, "property_name", final_value, duration)
主な機能と特性
機能 | 説明 |
---|---|
tween_property |
任意のプロパティを指定して補間する。 |
tween_callback(func_name) |
指定した関数を補間完了後に呼び出す。 |
set_parallel() |
同時に複数の tween を動作させる(並列アニメーション)。 |
chain() |
前の補間が終わってから次の tween を始める(直列アニメーション)。 |
set_delay(seconds) |
指定時間遅延させてから開始する。 |
set_trans(...) / set_ease(...) |
緩急のつけ方(イージング)をカスタマイズ。 |
実用例
スムーズな回転
var direction = (target.global_position - global_position).normalized()
var target_rotation = direction.angle()
rotation = lerp_angle(rotation, target_rotation, 1 - exp(-2 * delta))
lerp_angle(a, b, t)
:角度を補間する関数。ラジアン角を使用。1 - exp(-k * delta)
:フレームレートに依存しない重みt
の作り方。
スプライトの拡大・縮小アニメーション
tween.set_parallel()
tween.tween_property($Sprite, "scale", Vector2.ZERO, 0.15).set_delay(0.35)
tween.chain().tween_callback(collect)
TweenとAnimationPlayerの違い
項目 | Tween | AnimationPlayer |
---|---|---|
柔軟性 | ◎(コードで制御可能) | ○(UIで定義) |
変化対象 | 任意のプロパティ | タイムラインに定義したプロパティ |
動的パラメータ対応 | ◎ | △(事前に設定必要) |
コード量 | やや多め | 少なめ(ビジュアル) |
コメント
Tween
は、演出のスムーズ化やレスポンシブなUIエフェクトだけでなく、「プレイヤーの位置に向かって飛んでくる」など動的なゲーム演出を作るのに最適。AnimationPlayer
では難しい、「リアルタイムで変わる位置や角度に応じたアニメーション」に強い。

公開日
更新日