Godot 4 C# 中的 Tween 與後座力動畫


🌀 一、什麼是 Tween?

Tween(動畫補間) 是 Godot 提供的動畫工具,能讓你「在一段時間內自動平滑改變一個屬性」。

📌 用途範例:


🛠️ 二、基本語法(Godot 4 標準寫法)

csharp
複製編輯
// 產生一個 Tween 動畫管理器
Tween tween = GetTree().CreateTween();

// 製作動畫:讓某個節點的某個屬性在一段時間內改變
tween.TweenProperty(目標物件, "屬性名稱", 目標值, 持續時間秒數);


🧪 三、實際範例:後座力動畫

🎯 目標:

當玩家按下射擊鍵時:


✅ 四、完整程式碼(C#)

csharp
複製編輯
public override void _Process(double delta)
{
    if (Input.IsActionJustPressed("Shoot"))
    {
        FireWithRecoil();
    }
}

private void FireWithRecoil()
{
    // 1. 發射子彈
    var playerFire = bullet.Instantiate() as Node2D;
    playerFire.Position = this.Position + new Vector2(0, -100); // 子彈往上
    GetTree().Root.AddChild(playerFire);

    // 2. 後座力動畫
    Vector2 originalPos = this.Position;

    Tween tween = GetTree().CreateTween(); // 建立 Tween 動畫器

    // Step1:向下滑(模擬反作用力)
    tween.TweenProperty(this, "position", originalPos + new Vector2(0, 30), 0.05f)
         .SetEase(Tween.EaseType.Out)
         .SetTrans(Tween.TransitionType.Sine);

    // Step2:滑回原位
    tween.TweenProperty(this, "position", originalPos, 0.1f)
         .SetEase(Tween.EaseType.Out)
         .SetTrans(Tween.TransitionType.Sine);
}