godotの自分用覚書tipsメモ
覚書とtipsとメモって同じ意味じゃない?
「.glb」モデルに当たり判定を付ける
blenderでステージをモデリングしてglTF(.glb)形式で書き出しました。
D&Dでgodotに読み込んで使うことができますが、そのままでは壁にも床にも当たり判定はなくキャラクターが通り抜けてしまいます。
そこで、godotのファイルシステム内にあるモデルをダブルクリックして、モデルの設定画面を呼び出します。
blenderで作ったときのオブジェクト名でずらっと表示されるので、オブジェクトを選択し、右側の設定をすることで当たり判定を付けられます。
物理をONにして、Shape TypeをTrimeshとかにしとけばいい感じになるでしょう。
モデリングをする時点でわかりやすい名前にしといたほうがいいですね、オブジェクト名にcollisionってつける、とか。
Cubeを作る
Unityでは、「キューブを作ってから、当たり判定はあるか、動くのか、重力の影響を受けるかの設定をする」という作り方ですが、Godotでは「物理演算の影響を受けるオブジェクトです(RigidBody)」もしくは「動かないオブジェクトです(StaticBody)」とかの選択を先にしてから、それに対して当たり判定の形はなにか、見た目の形は何かを指定するノードをくっつけていきます。
例えばStaticBody3D(動かないオブジェクト)を用意してから、その子供にCollisionShape3D(当たり判定)、MeshInstance3D(見た目のポリゴン)を置きます。
わかってればなんてことないけどUnityから来るとちょっと戸惑う。
RigidBody3D、StaticBody3Dにスケールをかけるとなんか怒られる
警告が出ます。
実際に問題があるとかゲームができなくなるとかではないけど、推奨の行いではないようです。
それぞれの子供にあるCollisionShape3D、MeshInstance3Dの、Shapeの中にあるもの(BoxShapeとか)をクリックするとパラメーターをいじれるので、そっちで大きさを変えましょう。
インプットマップの設定がめんどくさい
メニューのプロジェクト→プロジェクト設定→インプットマップタブ
から、ゲームで使うボタンの設定ができます。
コントローラーの上が押されたときはこれ、下が押されたときはこれ、と一つ一つ設定をしていきます。
マジで?ボタン一つ一つを?何のために?
なんかデフォルトでいい感じに設定してくれる機能はないのか?
探せばありそうな気がするな?
オブジェクトの移動
ビジュアルスクリプティングがしたいよー!
しかし公式が「GDスクリプトやれよ」っていうから仕方がない
extends RigidBody3D
# 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):
var velocity = Vector3.ZERO # The player's movement vector.
if Input.is_action_pressed("Left"):
transform.origin.x += -0.2
if Input.is_action_pressed("Right"):
transform.origin.x += 0.2
if Input.is_action_pressed("Down"):
transform.origin.z += 0.2
if Input.is_action_pressed("Up"):
transform.origin.z += -0.2
多分一番原始的な移動スクリプトです。
if Input.is_action_pressed("Left"):
transform.origin.x += -0.2
重要なのはここらへん
インプットマップで”Left”としたボタンを押すと、Xの位置が(-0.2)ズレます。
ワールド座標系をもとに移動するので、カメラの向きが変わっても進行方向が変わってくれない。
スクリプトはよくわからん。
CharacterBody3Dをつかう
CharacterBody3Dってやつをつかうと、あとはボタンの設定をするだけで移動、ジャンプまでするキャラが簡単に作れるらしいです。
具体的には
CharacterBody3Dを作成
子供にCollisionShape3D、MeshInstance3Dを追加
CharacterBody3Dに対してスクリプトを新規作成すると、CharacterBody3D用のテンプレートが読み込まれた状態でスクリプトが用意されます。
あとはその中のキー操作内容をインプットマップで設定したものに合わせて完了です。
前後左右、ジャンプはできるけど旋回はできません。
ぐぬぬ…
エディタプラグイン
Unityで言うところのエディタ拡張みたいなものがgodotにもあるらしいです。
覚えて作業を楽にしたい。インプットマップとか自動化したい。
まだ何も調べてません。
公式アセットライブラリ
https://godotengine.org/asset-library/asset
アセットストアみたいなもの。
基本的に無料で使えるらしいです。
今度いろいろダウンロードして中身を見てみたいと思います。
https://godotengine.org/asset-library/asset?user=KayKit%20Game%20Assets
KayKitさんとかかわいくてよいですね。
サードパーソンのテンプレートもありました。
今度中を見てみます。
こちらからは以上です。
日本語でgodot情報出してくれてる人たち、さんきゅーな
この記事が気に入ったらサポートをしてみませんか?