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 では難しい、「リアルタイムで変わる位置や角度に応じたアニメーション」に強い。

サイトアイコン
公開日
更新日