これは機械翻訳されたテキストであり、誤りを含む可能性があります!
この情報はどこから来たのですか?
これはゴドットの公式ドキュメントの言い換えに過ぎません。以下に、公式ドキュメントへのいくつかの便利なリンクを示します(できればPiggyのこの翻訳よりも公式ドキュメントを参照することをお勧めしますが、この方が好きならどうぞ!)
便利なリソース:
その他の便利なリンク:
他のゲームエンジンは?
もしよろしければ、他のゲームエンジンを使用することも可能です。他のゲームエンジンの例は以下の通りです:
他にもたくさんありますので、他のものを試してみたい場合はぜひ検索してみてください!
Godotとは?
Godot(発音:グド)は、「ゲームエンジン」です。簡単に言えば、ゲーム(あるいは、望むなら一般的なプログラム)を作成することを可能にするソフトウェアです。Godotは、2Dと3Dの両方において、他の多くのゲームエンジンができることのほとんどすべてを行うことができます。
Godotで制作されたゲームの例:Godot Showcase
Godotで制作されているのはインディーゲームだけではありません。Sonic Colors UltimateもGodotで制作されています!🦔🦔🦔
Godot を入手するには
Godot は、以下の場所からダウンロードできます。
- 公式サイト: Godot Official Page.
- または Steam: Godot Steam.
ダウンロードしてインストールするだけです (または Steam で実行します)。
プロジェクトを設定!
Godot を起動すると、このウィンドウが表示されます:
ここで、プログラミング言語として GDScript または C# が尋ねられます。GDScript は Python と非常に似ています。
GDScript と Python の違い (色なし):
def hello():
text = "Hello world!"
print(text)
func hello():
var text = "Hello world!"
print(text)
Python の変数では、変数名だけを書くことができます。GDScript では、var を最初に書く必要があります。関数を作成するには、func を def の代わりに書きます。
シーンとノード
Godot における最も重要な概念の一つが、シーンとノードです。ノードから始めましょう。ノードは Godot におけるオブジェクトであり、何でも表現できます。プレイヤー、敵、メニューのボタン、画面上のテキストなど、何でも表現できます。シーンはノードの集まりです。
ここでは、非常にシンプルな例を作成します。
第1a部 - 「player」シーンの設定
Godotウィンドウの上部にある「2D」ボタンをクリックして、ビューを2Dビューに変更します。
ウィンドウの左側には、次のインターフェースが表示されます。
「Other Node」ボタンをクリックし、「CharacterBody2D」を検索して選択し、「Create」をクリックします。これは2Dプレイヤーに使用されるノードです。おそらく、”CharacterBody2D”ノードの横に警告三角形⚠️が表示されていることに気づくでしょう。これは、いくつかの必要なものが欠けているためです。
ノードを右クリックすると、「+ Add Child Node…」ボタンがあります。これを使用して、Sprite2DとCollisionShape2Dの2つのノードを追加します。Sprite2Dはプレイヤーにグラフィックを追加するために使用され、もう1つは衝突をチェックするために使用されます。追跡しやすくなるように名前を付けることもできます。私のCharacterBody2Dには「Player」という名前を付けました。シーンは現在、次のように見えるはずです。
第1b部 - CollisionShape2Dの修正 ⚠️
*この*ケースにおける警告の内容は、CollisionShape2Dに実際の衝突判定が欠けているというものです。これは、ノード(左側)をクリックすることで修正できます。クリックすると*右側*にパネルが表示されます。ここには、変更可能なノードに関する多くの情報が表示されます。ぜひ、そこに表示されている内容をいろいろと試してみてください。しかし、今回注目したいのは「Shape」です。これを、例えば RectangleShape2D に設定してください。ここでは衝突判定を使用しないため、それほど重要ではありません。
Del 1c - スプライト、グラフィックを追加する
Sprite2D の左側をクリックすると、右側に「Texture」というフィールドが表示されます。ここにプレイヤーの画像を追加できます。画像をフィールドにドラッグ&ドロップするだけです。
スプライトを追加した後の状態は次のようになります。
第2部 - 入力追加、コントロール
ウィンドウの上部には、”Scene - Project - Debug - Editor - Help” というメニューがあります。 “Project” をクリックし、その後 “Project Settings” をクリックします。 ここで、多くの設定を含むメニューが表示されます。”Input Map” をクリックします。 ここで、キーボードのボタンを設定できます。
- “Add New Action” フィールドに “left” と入力し、その後 “Add” をクリックします。
- その後、”right”, “up” および “down” を追加します。
- これらは “Actions” として認識されます。
- 各 “Action” には、右側の + ボタンをクリックすることでボタンを追加できます。
- ここでは、キーボードをクリックし、その後 Add をクリックするだけです。
- すべてのアクションにボタンを追加します。
第3部 - プレイヤーを制御するためのスクリプトを追加する。
ゲームロジック、つまりプレイヤー、背景、またはゲーム内の何らかの要素に対して何かを行うためには、スクリプトが必要です。スクリプトはコードであり、GDScriptまたはC#という2つの言語で記述できます。デフォルトはGDScriptです。
- “CharacterBody2D” (私はそれを “Player” と呼んでいます) ノードを選択します。
- 「スクリプトをアタッチ」ボタン (下記参照) を押します。
- ここで、言語を選択できるウィンドウが表示されます (GDScriptを選択)。そしてパス (デフォルトのままにしておいて問題ありませんが、名前を付けても構いません)、その後「次へ」をクリックします。すると、「スクリプト」ウィンドウが表示されます。最初はあまり記述されていません。
extends CharacterBody2D
# Dette er en enkel karakterkontroller
# This is a simple character controller
# これはシンプルなキャラクターコントローラーです
このコードが現在行っていることは、コードが “CharacterBody2D” タイプノードに属するようにしているだけで、これは私たちのプレイヤーです。
ここに、プレイヤーを操作するために使用する関数を追加します。
extends CharacterBody2D
func _physics_process(delta: float) -> void:
# Fortsetter fysikkprosessen
# 続行する物理プロセス
return
Physics Process?
_physics_process は、毎フレーム、つまりデフォルトでは1秒間に約60回更新される関数です。_process と呼ばれる別の関数もあり、こちらは常に更新されます。プレイヤーを一定の速度で動かしたい場合は、_physics_process を使用します。
ここに、プレイヤーを移動させるコードを追加します。
第4部 - 基本的な入力
第2部では入力ボタンを追加しました。今度はそれらを使用します。組み込みの*オブジェクト* Inputがあり、これを使用して、”Input Map”で設定したボタンが押されたかどうかを確認できます。
_physics_processコードに次のコードを追加してみてください。
if Input.is_action_pressed('right'):
# 右に移動
velocity.x = 100
# 移動と衝突判定
move_and_slide()
move_and_slide()とは何ですか?
move_and_slide()は、Godotに組み込まれた関数で、実際に移動させたいオブジェクトに使用します。これがないと、プレイヤーは移動しません。
Warning
行間のスペースは非常に重要です。これはPythonと同じです。
Godotウィンドウで再生ボタンをクリックした後、「right」をクリックするとどうなりますか?
今何も起こらない場合:
- 「Input Map」で何かを設定しましたか?
rightとRightを間違えていませんか? つまり、コードに書いた名前とInput Mapの名前が一致していますか?
ここまでの全コード
extends CharacterBody2D
func _physics_process(delta: float) -> void:
if Input.is_action_pressed('right'):
velocity.x = 100
move_and_slide()
`'left'`, `'up'`, `'down'` のコードを追加してみてください。
`left` の場合、`velocity.x` はいくつである必要がありますか? `up` と `down` の場合はどうですか?
全コードはこちら
extends CharacterBody2D
func _physics_process(delta: float) -> void:
if Input.is_action_pressed('right'):
velocity.x = 100
if Input.is_action_pressed('left'):
velocity.x = -100
if Input.is_action_pressed('down'):
velocity.y = 100
if Input.is_action_pressed('up'):
velocity.y = -100
move_and_slide()
第5部 - コードの修正
おそらく、方向キーを離してもプレイヤーが止まらないことに気づいたかもしれません。今、それを修正しましょう!
すべての if 文の前に、velocity を 0 に設定する行を追加します。velocity = Vector2() と記述することで実現できます。
Godot のすべての速度と方向は ベクトル です。これは今すぐ掘り下げるべき数学の概念ではありませんが、この意味がもっと詳しく知りたい場合は、こちらをご覧ください: Wikipedia vectors。
コードの全容
extends CharacterBody2D
func _physics_process(delta: float) -> void:
velocity = Vector2()
if Input.is_action_pressed('right'):
velocity.x = 100
if Input.is_action_pressed('left'):
velocity.x = -100
if Input.is_action_pressed('down'):
velocity.y = 100
if Input.is_action_pressed('up'):
velocity.y = -100
move_and_slide()
ゲームを開始すると、プレイヤーを移動させることができます:
さらに、速度が単なる数値ではなく、別の場所に保存できるようにコードを修正できます。
たとえば(関数より前に)、速度を追跡する 定数 を追加することができます。
最後にconstでコード全体
extends CharacterBody2D
const SPEED = 100
func _physics_process(delta: float) -> void:
velovity = Vector2()
if Input.is_action_pressed('right'):
velocity.x = SPEED
if Input.is_action_pressed('left'):
velocity.x = -SPEED
if Input.is_action_pressed('down'):
velocity.y = SPEED
if Input.is_action_pressed('up'):
velocity.y = -SPEED
move_and_slide()
第6部 - 自分で色々試してみよう!
最初のセクション、「便利なリソース」に戻ると、さらに試せるものが見つかります。
その後は、独自のゲームを作成してみてください。何を作成するかはあなた次第です!全く新しいものを作りたい場合は、そうしてください。すでに存在するゲームを模倣してみたい場合は、そうしてください!学ぶ最良の方法は、試してみることです!




