Godot

GDScript

Globals

EditorScript

とりあえず、言語を試すにはこの設定がよいか。

2D メインツールバー

q選択モード

w移動モード。選択モードとの違いはよくわからない

e回転モード。

sスケールモード。シフトで縦横比を維持できるようだ。

四角いボタン。ノードが重なっている時に選択メニューを表示する。

ピボット設定ボタン。ピボットがオブジェクトの中心位置になる。(そこからオフセットになる)

g, space。パン。

rルーラーモード。定規が表示される。

shift + sスマートスナップモード。他のオブジェクトと整列させるために使うようだ。

shift + gグリッドスナップモード。グリッドにスナップする。G

三つの点。スナップする対象を切り替える。

command + lロック。

command + gグループ化。親ノードと子ノードをグループ化する。一つのノードを選択すると全体が選択される。

スケルトン。今のところ時期尚早。

ビュー。時期尚早だが、だいたい見ればわかる。

Node2D

canvasitem

canvasitemはすべての2Dオブジェクトの抽象基底クラスらしい。

Visible可視不可視。

Light Mask時期尚早。

Sprite2D

Godotのファイルシステムに画像を読み込んで、Textureで読み込む。

Node

-Node

重要だと思うのだが、例をが見つからないのでよくわからない。

CanvasLayer

レイヤーが必要ならこれを使う。主に背景だろう。

数値が大きいほど手前にくる。常にデフォルトのCanvasLayerが存在しているようで、デフォルト値は0

ビューポートとキャンバス変換

Transformのことかと思うけど、よくわからない。

ライトとシャドウ

時期尚早だろう。

スプライトアニメーション

時期尚早。

パーティクル

時期尚早。

CharacterBody2D

2Dボディを動かすためのクラス。

プロジェクト -> 設定 -> インプットで入力方法を設定しておく。

以下のようなものをScriptに設定する。

 1 extends CharacterBody2D
 2 
 3 @export var speed = 300
 4 
 5 func get_input():
 6     var input_direction = Input.get_vector("ui_left", "right", "up", "down")
 7     velocity = input_direction * speed
 8     
 9 func _physics_process(delta: float) -> void:
10     get_input()
11     move_and_slide()

CollisionShape2D

多分、これが衝突オブジェクト。子にSprite2Dを持たせれば良いだろう。

衝突

内訳には4つのオブジェクトがあるようだ。

StaticBody2D

衝突可能な静的オブジェクト。床などに使うだろう。

RigidBody2D

freezeプロパティを有効にすると物体を固定できる。そうするとStaticBody2Dと違いはなくなる。

CharacterBody2D

自分は物理の影響を受けないが、他のオブジェクトには物理の影響を与える。名前の通りキャラクター用。

velocityが速度ベクト

CollisionShape2D

基本的に、衝突にはこれを使えばよい。

Input

入力を処理するためのメソッド(オーバーライドして使う)

シーン

どうやら、シーンはGodotにおける基本構成単位のようだ。

具体的にはファイルシステム -> 新規シーンとしてシーンを作成する。

作成したシーンは別のシーンから、シーンブラウザの「子シーンをインスタンス化」でインスタンス化することができる。(おそらくスクリプトからも可能だろうが、まだ知らない)

1 var s = preload("res://foo.tscn")
2 var i = s.instantiate()
3 add_child(i)

シーンのインスタンス化

positionは親からの相対位置になるようだ。

最後に、ノードは解放しないとリソースリークになるのだろう。

1 var s = preload("res://foo.tscn")
2 
3 func genSI() -> void:
4     var i = s.instantiate()
5     var p = get_parent()
6     p.add_child(i)
7     i.position = Vector2(1000, 0)
8     print(i.position)
9     #i.queue_free()

Godot インターフェース

後で。

Godot 通知

_notificationに全ての通知が届くようだが、_physics_processはなぜか取得できない。とりあえず、オーバーライドしておけば動くので、とりあえずこれでよしとしよう。

_initは最初に呼び出されるようだ。

_readyはUIで設定したプロパティを初期化した後に呼び出されるので、通常の初期化はこれを使うべきだろう。

_physics_processはフレームごとに繰り返し処理を行う部分に使うのに最適なそうだ。

とりあえず、_ready_physics_processを覚えておくだけで十分だろう。

インプット

プロジェクトの設定で設定したキーバインドを取得するには以下のようにすればよい。

1 if Input.is_action_pressed("down"):
2     print("down")

シグナル

基本的には、UIのノード -> シグナルにそのノードが発行可能なシグナルがリストアップされているので、そこから選ぶ。受信者とその受信メソッドも自動的に作成される。

スクリーンの外に出ているかどうか、シグナルで判定する

これは、UIで子ノードとして追加しする。

まだ試していない。

スプライト

テクスチャ

画像を読み込んだ場合これが生成される