[Godot] 降順(逆順、後ろから前へ)でforループする

Godot公式サイトへのボタン
完全無料の高機能ゲームエンジン「Godot」の解説を書いています。
公式サイトはこちら公式ドキュメント(Godot 4)公式ドキュメント(Godot 3)当サイトのGodot記事一覧はこちら

今日はGodotで逆順(後ろから前へ)でforループする方法を探ります。

Godotのforループの書き方はいくつもあり、配列などに適用して抽出するイテレーションも利用可能です。

記事中の商品/サービス

基本形

最も単純なループは次の通り。

for i in range(5):
  print(i)

結果

0
1
2
3
4

レンジ最後の数字(上記なら5)は出てこないことに注意。range内の数値は、i < 5 として認識される。i <= 5 ではない。

ステップ数を指定したループ

ステップ数を指定したループも可能。

for i in range(0, 10, 2):
  print(i)

結果

0
2
4
6
8

ステップ数を足された数でループが回っている。最大値の10が出てこないことにも注目。

逆順のループ

いよいよ逆順のループです。

逆順は「最大数から指定数値を引く」という考え方になっています。ステップ数を指定したループと同じ形になり、ステップ数には「引きたい数」を指定する形となります。第3引数の -1 が重要です。

for i in range(5, 0, -1):
  print(i)

結果

5
4
3
2
1

この場合も最後の数字(0)が出てこないことに注意。

ステップに正数を指定した場合何も指定しなかった場合、数字を足そうとしてしまいますので、range(5, 0) とした場合、ループは1度も回りません。

数値の上下を自動判断してループしてくれるわけではありません。

数字を減らす場合は第三引数で必ず負数を指定する必要があります。

イテレーションでの逆順

arrayに対して逆順のイテレーションをしたい場合、単純なfor文では不可能です。

大きく2つの手段があります。

  • インデックス数字を逆順に回し、arrayを参照する
  • 逆順のarrayを生成し、それをイテレーションする

逆順のarrayを生成するサンプル。

var array = ["A", "B", "C", "D"]
var array_2 = []

array_2 = array.duplicate() #コピー
array_2.invert() #逆順に並べ替え
print(array_2)

結果

[D, C, B, A]

 

コメント