Godot GDScript 14 「API と 関数 と 型」 ... global_rotate()
前回GDScriptネタを扱ったので、今回もちょっとコレをやろうと思う。玉転がしの11で「Area」ノードをglobal_rotate()
関数を使って回転させたが、この関数、どこから見つけて来たのかに関して書いておきたい。
まずは、ココ、APIのページをブックマークだ。Godot API — Godot Engine latest documentation
ノード と カテゴリ
インスペクターパネルを見ると、いろんな編集項目(プロパティー)があるが、親切にもカテゴリに別かれて並んでいる。「Area」ノードを例にとると、 4つのカテゴリに別れているのが分かる。
回転させたいなと思った時、インスペクターパネルを見て、カテゴリを見て、また、閉じている項目があれば開いていくと、Spatialカテゴリ > Transform > Rotation Degreesを発見する。で、ローテーションってあるし、ここをいじって回転させるんだなと思うわけだ。そしたら次の段階。
API と 関数
今度は、APIで調べる。一番最初にブックマークした所だ。サーチしてもいいし、スクロールして下って行ってもいいけど、さっきのカテゴリ、Spatialを探して開く。
そのページのMember Functionsの表にズラーと並んでいる中から、回転に関係するような用語(ローテーションとかローテートとか)を探してみる。すると、 あった。これが使えそうだとなる。
後は使い方だが、下の方にMember Function Descriptionというのがある。運が良ければ、ここに使い方が載っている。 今回は、運がよかった。
axis(軸)はグローバルで、angle(角度)はラジアンで設定せよとの注意書きも載ってる。
大抵は、こうやって探せばイイと思う。
型
ここが分かれば、一気にAPIの見方が分かるというのが型だ。ま、Member Functionsの表が、なんだか分からんごちゃっとした表から、すっきり分かる表に見えるようになる感じだ。
ここでも、global_rotate()
関数を例にとる。
- この欄には、関数が返してくる型が書いてある。この欄に"int"とあれば整数型、"float"とあれば浮動小数点型、"bool"ならtrue / falseのブール型(ブーリアン型)で答えを返しますよということ。中でも、"void"というのが一番分かりやすい。「答え(数値)は返しませんよ。」という型。
今回はこれ"void"が当てはまっている。回転させるだけだから、別に、答え(数値)なんていらないだろ。回れと言った分だけ、回ってくれればイイだけだからな。 - 1個目のパラメータに軸(axis)の情報を入れるのだが、ここに入れる時は、Vector3型にしてねっていうこと。
- 上と同じ、2個目のパラメータに角度(angle)の情報をいれるのだが、float型にしてねってこと。
これが分かれば、Descriptionの方に書いてある
" void global_rotate ( Vector3 axis, float angle ) "
が
" global_rotate ( axis, angle ) "
のようにすっきりと見えるじゃないか。さらに熟練度が増し、
「グローバルで回す(軸、角度)」
のように、日本語で見えるようになったら大したものだ。免許皆伝だ。
クラス
インスペクターパネル上では4つ見えたから、4カテゴリでいいんだけど、「Area」ノードっていうのは、APIから探してみると、 というように5つのクラスから出来上がっているのがちょっと注意かな?
「Area」ノード = (Area + CollisionObject + Spatial + Node + Object)クラス
なんか変だよね。「Area」ノードって言ってるのに、Areaクラス1つで出来ているんじゃないんだぜ。不思議だよね。
まー、でも、そのおかげで、「Area」ノードのプロパティを操作する時には、この5つのクラスに書いてある関数が使えるってことになる。
1こ増えてよかったな。
今回は「Area」ノードを例にとってみたが、インスペクターパネルを見て(又はAPI)、そこにSpatialカテゴリ(又はクラス)があれば、同様の事ができるってことだ。応用が利くだろ。覚えておこうぜ。