2Dプロジェクト作成手順③:ノードの条件分岐処理(GDScript)
GDScriptでどのような分岐処理をしていくか
前回は画像を動かす方法を解説した。
ただし、前回までの方法ではただ一方向に飛んでいくだけのものであった。
今回は「ある条件が成立すると処理を変える」制御を追加していくことで、より複雑な動きにしていく。
まずこれが前回までのGDScript
ただ、右に画像が飛んでいくだけのプログラムである。
通常はそれに対して更に条件をもとにした処理を追加することになる。
例えば、positon.xが400になったら逆に左に動くようにしたい。position.xが300を超したら減速したいなどである。
今回は「positon.xが400になったら逆に左に動く」ようにしよう。
処理の流れとしては、以下となる。
・最初はpostion.x = position.x + 1
・position.xが400を超えたらpostion.x = position.x - 1に変わる。
この際、条件により変化するのは最後の+1/-1の部分のため、これを変えられるように変数化する必要がある。
+1の部分を変数化してspeedという名前にしよう。変数はプログラムの最初のほうで定義するのがお決まりである。
※実際にはどこでも定義できるが、一般的にプログラミングではプログラム全体の最初、または関数内の最初に定義する。
このように最初に var speed = 1 と記入することで、初期値1のspeedという変数を定義するという意味になる。
そのうえで元々 position.x + 1 となっていたものを、positon.x + speed とする。
これで制御内容としては変わらず、+1の部分を変数化することが出来た。あとはこれを条件によって変えるのみである。
条件式を追加するには if を使用する。英語の意味の通り、「もし~ならば」という制御である。
if position.x > 400:speed = -1と記入すると、「もしposition.xが400を超えたら、speedを-1にする。」となる。
なお、if式は改行して2行以上のプログラムを書くこともできる。
この状態で実行すると、途中まで右に進んでいた画像が折り返して左に抜けていく。
さらに0より小さいときに+1に戻す条件式を追加すると、
positon.xで0~400の間の位置を左右に往復する動きになる。
今回はここまで。
※(補足)変数宣言時にやったほうが良い(かもしれない)こと。
もし、今回のspeedみたいに何度も変えてスピード調整したいような場合、そのたびにプログラムを変えるのは手間である。
その場合は変数の宣言varの前にexportを追加する。
こうすると、画像のパラメータ一覧(インスペクター)の中に定義した変数が出てくる。
こうすれば、プログラムをちょこちょこ変更するよりはパラメータ変更の調整がしやすい。
パラメーター調整が完了した次第、初期値を調整してexportを外しても良いし、そのままexportをつけたままでも、それはお好みで。
※管理人はパラメータ調整が終わったことを管理するために、調整が終わったものはexportを外す主義。