見出し画像

第5章 初めてのプログラミング

 Godotでは4つの言語に対応していますが今回はGDScriptを用いてプログラミングをしていこうと思います。
 理由としてはGDScriptが公式ドキュメントで最も充実しているように感じたため読者の皆様が自分一人でも調べることができるようにと考えたためです。

1.プログラムとは
2.ノードにスクリプトをアタッチする
3.プログラミングの第一歩「Hello World」
4.「func _ready()」の正体

プログラムとは

 普段よく聞くプログラムという言葉。これは私たちがコンピューターが実行できる処理のことを言います。実行記憶判断の3つがコンピューターの主な役割ですが、そのすべてが

 コンピューターは私たちのように柔軟な自由言語を扱うことができないためプログラミング言語を用いてコンピューターに命令します。
 おそらく、まだイメージができない人が多いと思うので簡単な例を使って説明していきます。(架空のプログラミング言語を使います)

表示しろ こんにちは

 意味は画面に「こんにちは」と表示しろという意味です。では次はどうでしょうか?

表示しろ こんばんは

 察しがいい人は気づくかもしれないですが、意味は画面に「こんばんは」と表示しろということになります。

 では最後にもう一つ。

表示しろ おはよう
表示しろ こんにちは
表示しろ こんばんは

 意味は画面に「おはよう」と表示して、そのあとに「こんにちは」と表示して、そのあとに「こんばんは」と表示しろということになります。

 実際のプログラムもかなり単純です。

print( "おはよう" )
print( "こんにちは" )
print( "こんばんは" )

 表示しろという単語がprintに置き換わったぐらいでほぼほぼ違いがありません。
 プログラムとは非常に単純な文法の集まりだと考えていただければ問題ありません。

ノードにスクリプトをアタッチする

 「スクリプト?アタッチ?」となる方もいらっしゃると思います。Godotではプログラムが記載されているファイルをスクリプトと呼び、それをノードに割り当てることをアタッチと言います。

 それではさっそく、スクリプトをアタッチしていきましょう。
 以前に作ったプロジェクトを開いてください。そして「Main.tscn」シーンを開いてください。

画像1

 シーンドックでNode2Dを選択した状態でシーンドックの右上にある巻き物をクリックしてください。

画像2

以下のような画面が出たらスクリプトを作成することができます。作成ボタンを押すとスクリプトが作成されNode2Dにアタッチされます

画像3

画像4

 Node2Dの横に巻き物のようなアイコンが表示されていれば無事にスクリプトがアタッチされています。

画像5

 それよりも気になるのは画面の真ん中に出てきたワチャワチャしている文章だと思います。これはソースコードです。人間がわかるように作られたプログラムといったところです。

 この真ん中のところに新しくプログラムを書いていきます。

プログラミングの第一歩

 まずは真ん中に出てきたソースコードを見てみましょう。

extends Node2D

# Declare member variables here. Examples:
# var a = 2
# var b = "text"

# Called when the node enters the scene tree for the first time.
func _ready():
	pass # Replace with function body.

# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
#	pass

 ここでGodotのソースコードを見るとわかりますが、「#」が付いている行に灰色になっている場所があります。これはコメントと呼ばれる場所でありコンピューターの実行結果に関係ない、メモのような役割を持っています。

 いったんコメントをすべて消してみましょう

extends Node2D

func _ready():
	pass

 非常にシンプルな形になりましたね。ここで重要なのが「func _ready()」の部分です。プログラムはこの行から始まります。つまりここから書き始めるとあなたが書いた命令をコンピューターが実行するということです。

 さっそく命令を書いてみましょう。以下の命令を追加してみてください。

extends Node2D

func _ready():
    print("Hello")

 ここで気を付けてほしいところはprintの前の空白は半角で「Tabキー」を使うことです。スペースキーで空白を入れるとエラーとなるので注意してください。

エラーの例

画像6

 また、「"」←こちらの入力は「Shift + 2」です。「"」も忘れずに入力してください。入力を忘れるとエラーとなります。

エラーの例2

画像7

 いよいよ人生初のプログラム実行をしてみましょう。第3章でやったテストプレイボタンから「シーンの実行」をしてください。

画像8

 そうすると・・・ゲーム画面は変わりないですね。

 しかしエディタの下パネルを見ると。

画像9

 見事にHelloと出力されています。では次はどうなるでしょうか。

extends Node2D

func _ready():
    print("Hello")
    print("I love Yape.")
    print("Bye.")

 ソースコードを入力したら実行してみましょう。

画像10

 そうすると下パネルに「こんにちは」「私はやーぺが好き。」「じゃあね」というちょっと危ない人っぽいプログラムを作ることができました。

 ふざけているわけではなく、この順番を確認してみてください。

extends Node2D

func _ready():
    print("Hello")
    print("I love Yape.")
    print("Bye.")

画像11

 ソースコードが「Hello」「I love Yape」「Bye」の順。
 出力も「Hello」「I love Yape」「Bye」の順。
 比べるとわかる通りソースコードが上から順番に実行されていることがわかります。

 そう、プログラムは基本的に上から順番に実行されているのです。

 何度か並べて実験しても基本的に上から順番に実行されているでしょう。


「func _ready()」の正体

 「それはわかったけど func _ready()って結局なんなの?」と思われる方もいるかもしれません。func _ready()はノードが読み込まれた段階で実行される部分と覚えていただいて大丈夫です。

 この話をすると新しいことを覚えすぎてややこしくなると思うので今回は

・プログラムは非常に単純な文法で作られている
・GDScriptはノードにアタッチしてゲーム実行すると起動する
・プログラムは上から下へと実行される

ことを覚えていただければ幸いです。


この記事が気に入ったらサポートをしてみませんか?