見出し画像

#2 Godot Engine ステップバイステップ 「ノードの種類」

前回の記事では、基礎となる「ノードとシーン」について少し書きました。
この記事で「は?ノードってなんだよ!専門用語ばっかり使うんじゃねぇ!」って方は、前回の記事をご覧ください。

ノードはおもちゃ!

ノードは、便利な機能の詰まったモノです。
僕にとってのイメージなので、わかりにくかったらすいません。

シーンとノードは子供部屋とおもちゃのようなものだと思ってます。

画像1

箱にはおもちゃがたくさん入ってます。
そのおもちゃは、それぞれ機能が違います。

・後ろに引くと走り出す車
・お腹を押すと鳴くクマ
・スイッチを入れると歩くロボット

これが「ノード」だと思っています。
厳密に言えば色々違いが出てくるんですが、初心者にはこの程度の認識でいいんです。

正しく完璧に認識する努力をして挫けるくらいなら、
間違っててもわかりやすく認識して続ける方が得です。

子供部屋といったのは、このおもちゃを使って「ごっこ遊び」を展開する場こそ、シーンに相当すると思います。

主人公のロボットが、走る車に蹴りを入れて、鳴いてるクマを助ける

子供時代の僕は、こんな「ごっこ遊び」をするわけです。

これをゲームエンジン的に変換すると、

RobotノードとCarノードの衝突を検知して、Bearノードが現れる

上記のような事ができるわけです。

少し脱線しましたが、要するに「現時点ではノードはおもちゃなのかぁ」くらいに思っていいです。
「ノード」という言葉を「おもちゃ」って訳しながら読んでもらっても構いません。

****

2Dゲームのノード

■ Node2D

2Dゲームの根幹となるようなノードですが、機能としてはシンプルです。

・座標が決められる
・大きさが決められる
・回転させられる

ざっくり言えばこれだけの機能です。
逆に「じゃあ他のノードでは、座標を決められないの?」と思う人もいるかも知れません。
Node2Dってどんなノードなのか?というと、僕の考え方で言えば「おもちゃ」という概念そのものです。

例えば、例に出した「クマのおもちゃ」も「車のおもちゃ」も機能は違います。

クマは走りませんし、車は鳴きません。

が、共通しているところもあります。
「手に持って移動させる」ことはできますし、「そのものをクルクルと回す」ことができます。

Node2Dというノードの機能は、そのくらい「根幹となるようなノード」なのです。

■ KinematicBody2D

名前が複雑ですが、要するに「人形」のようなノードです。

・ぶつかるといろんな反応をする
・設定すると自動で移動する

「おもちゃ」的な説明にしてみました。
ざっくりと機能的にはこんな感じです。

そして「KinematicBody2D」も「Node2D」ではあります。
これだけ言うとわかりにくいですね。

ようするに、「人形」も「おもちゃ」です。

わかりやすくなりましたか?

■ StaticBody2D

「KinematicBody2D」に似ていますが、「人形」というより「壁や床」のようなものです。

・ぶつかるといろんな反応をする
・ぶつかったときの摩擦や反射の設定ができる
・自動で移動はしない

手作業で壁や床を置くことはできますが、自動で動くような設定はできません。
プラレールのレールのようなものでしょうか。

■CollisionShape2D

モノが衝突するには、どれくらいの大きさなのか知る必要があります。

ざっくりいうと「CollisionShape2D」は上記で説明した「KinematicBody2D」「StaticBody2D」の衝突範囲を決めるためのものです。

・親ノードの衝突範囲を決める
・衝突する形を決める

「Body2D」系のノードには「ぶつかるといろんな反応」をする機能はあっても「ぶつかるための設定」はできないのです。

■ Sprite2D

絵です。
凄くシンプルな機能ですが、Node2Dのように、あらゆるノードが持っている機能ではありません。

・絵を表示する
・その絵がどう見えるか設定する

これまでのノードの説明では、わかりやすいように「おもちゃ」としてノードを説明しましたが、ノードそのものは目に見えません。

なので、もし絵を表示したい場合はSpriteに頼る必要があります。

ノードの集合体

画像2

さて、ここまで読んでくれた方は、上の画像の意味がわかるでしょうか?

Player(KinematicBody2D)ノードの中に、Collision(CollisionShape2D)とSprite(Sprite2D)がぶら下がっています。

これが「Player」という「おもちゃ」が「絵を表示して、衝突して反応する」機能を得て、自分の好きな「人形」になったわけです。

今回はここまでです!