※前記事の続き
https://extrose.stoicsounds.jp/blog/?p=5415
現状

EXEファイルが出力できて満足して終わったときの画面
しかしゲームなのだからやはり動いてほしい
ということで、画像を単純に左右だか上下だかに動くようにする
引き続き直感的にでできるかどうか試す
レッツトライ

とにかく「アニメーション」だろうということで、タブを開くと「AnimationPlayer」ノードを開けと

ノードはこの辺か?ということで、画像として配置してあるオブジェクト・・・ノードを右クリック
「子ノードの追加」を行う

ビッタなものを発見したので「作成」

すると下のアニメーションタブが空になった

「アニメーション」⇒「新規」


名前を決めて作ると様子が変わった

トラックの追加

「プロパティトラック」を開くと Animation Player が現れるのでそれを選択

いろいろ現れたが、本当にプロパティ値を変更するもののようす
今は単純にX,Y座標を変更したいので、いずれお世話になるだろうということを覚えて閉じる

レコーディングを示す「rec」のアイコンはキーの自動挿入とある
・・・がこれでもキーの追加はされてこない

キー挿入を試す

なんだかトラックが新規で作られるようだが、とりあえず「作成」

映像制作で見る、期待した状態となってきた

この状態で「キーの自動挿入」を有効、ノードを画面で動かしてみると position にキーが打たれた

時間「1.0」で右に置いてみる
ここで、アニメーションタブ内の再生ボタンを押すと、右に動く様子が出来上がった
これで動くのかと思ったらが、右上再生ボタンを押してテスト起動するも動作しない
アニメーションをトリガーする必要がある様子

じゃあ Initあたりで起動するようにするのかと思って「Script」を開く

「新規スクリプト」


ファイル名を指定して保存するとこうなる

出来上がったスクリプトファイルは単独として扱われる様子
「TestScript1.gd」を「Node2D」にD&Dすると、「Node2D」の横に紙ペラのマークがついた
紐づけがされた様子

流石にこうなると直感的には無理だ、となってChatGPTを使用
それを参考に実装するとこんな感じになるそうだ
なお、プログラムはPythonライクになるが、GDScript という独自の言語である
extends Node2D
# AnimationPlayerノードを取得
@onready var testSprite = $AnimationPlayer
func _ready():
testSprite.play("TestAnimation")
アノテーションの意味はあとで調べるとして、testSprite としている AnimationPlayer とは、
ノードの子ノードに紐づけた AnimationPlayer である
それが持っているアニメーション、即ち先ほど作ったものを指定して「play」すると動作する、らしい

実行してみるが、どうやら testSprite は null のままらしい

確認してみたところ、オブジェクトの構成に問題があった様子
AnimationPlayer を Node2D直下にすると $AnimationPlayer が使える
これまでの状態でも、A02~というファイル名から作られたノード名.AnimationPlayer としてもよさそうだが、
それよりもコードの可読性があり、転用も効きやすいので構成自体を変更する手段を取った
それでも動作しなかったが、上述コードのplayで指定しているアニメーションが「TestAnimation1」になっていないだけだった


動作するようになった
今日はこんなところにしよう