Tween(動畫補間) 是 Godot 提供的動畫工具,能讓你「在一段時間內自動平滑改變一個屬性」。
csharp
複製編輯
// 產生一個 Tween 動畫管理器
Tween tween = GetTree().CreateTween();
// 製作動畫:讓某個節點的某個屬性在一段時間內改變
tween.TweenProperty(目標物件, "屬性名稱", 目標值, 持續時間秒數);
當玩家按下射擊鍵時:
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);
}