Godot キャラコン 01 「とりあえずカプセル」
なんだかんだで、YouTubeにある"1st Person"のチュートリアルそのまんまで、"3rd Person"もイケそう。なんか、「~やってみた」系になりそうな予感で悪寒・・・。ブログで「やってみた」系とかアホかと思うけど、ま~、ともあれ、適当な名前でプロジェクトを作って開始じゃ!
基本となるノードを配置
[1]
上図の様にノードを配置して、リネーム。注意点は特にないが、上から順に簡潔に。
- 今回、ルートノードは「Node」にしてみた。で、俺の好きな"Node_GOD"にリネーム。
- 「DirectionalLight」を置く。"DirectionalLight_Sun"にリネーム。邪魔なので、下(-y方向)にずらす。
- 「Camera」を置く。"Camera_Main"にリネーム。これも邪魔なので、手前(+z方向)にずらす。
- 「KinematicBody」を置く。"KinematicBody_Player"にリネーム。ここから、魔法の組み合わせ3点セット入ります。
- 「MeshInstance」。子。
- 「CollisionShape」。子。
ここまでで、3Dビューエディタ上だと、こう。
[2]
キャラクタコントローラの基本形はカプセルが人気のようだ。坂道が上りやすいのだろうか? 直方体でイイ気もするが、俺も不安なので一応カプセルでいく。
「MeshInstance」ノードはMeshInstanceカテゴリのMeshプロパティで、「CollisionShape」ノードはCollisionShapeカテゴリのShapeプロパティで、それぞれカプセルを選択。
そうするとカプセルは、寝っ転がって出てくる謎仕様(英語だからよく分からんが、解説してる人も文句を言ってたような、言ってないような・・・)。
しかもなにげにデカイ!
[3]
というわけで、先ずはx軸を-90度(又は+90度)して立たせる。これ、親である「KinematicBody」ノードを回転させちゃえば、子の「MeshInstance」と「CollisionShape」の両方を一気に立たせることが出来るけど、どうなんだろうな。分からんけど、今回は個別に回転させてみた。一気にやる場合だと、「KinematicBody」のz軸が上向いちゃうだろ。これがちょっと気になっただけ。
(「MeshInstance」と「CollisionShape」の両方やれよ)
ほっそりさせる
さっきも書いたけど、カプセルはデカすぎる。幅2m、高さ3mだ。上下の丸くなってる部分は半径1mの球をパカッて切ったもので、胴の部分は高さ1mといった具合。中ボスクラスを意識して作った感じか?
人間様サイズに近づけよう。これも、Spatialカテゴリ > Transform > Scale でやってもいいような気もするけど、確かどっかで「CollisionShape」のScaleは、いじるとGodotが上手く認識出来ないようなことを聞いたような聞かなかったような・・・。そんな感じだから、今回はScaleはいじらず、別方法で形を整える。
[1]
「MeshInstance」のほっそり化。
MeshInstanceカテゴリ > Meshの図の部分をクリック。
CapselMeshの設定になるから、Radius(球の半径)とMid Height(真ん中部分の高さ)を調整。
俺は、球半径0.25mで、真ん中1.3mにした。これで身長1.8m。ゲームではよくあるタイプだと思うけど、どお? 倍率(Scale)で形を変えるより、コレみたいに数値を入れて形を整える方が楽だよね。イメージしやすいでしょ。
[2]
「CollisionShape」のほっそり化。
同じようにやればいい。CollisionShapeカテゴリ > Shape の変な文字が書いてあるところクリック。
(もしかしたら、1回シーンのセーブが必要かも)
こっちはCapselShapeの設定になるから、RadiusとHeightを調整。
[3]
メッシュとコリジョンの外枠がぴったりと合ったら成功だな。
テンキー(ナンバーキー)の5を押してOrthogonalとPerspectiveの切り替えとか、3とか7とか押して真上から見たり真横から見たりすると、メッシュとコリジョンの枠が一致してるか確認しやすい。
今日はここまで。[Save & Close]。