俺に解るように説明する "Godot Engine 3.x" 入門+

ゲームエンジン Godot Engine に関すること。入門とか使い方とかチュートリアルとか、あれとかこれとか。日本語解説。

Alicia in Godot Land #04「アイテム、ゲットだぜ! って・・・」

f:id:ore2wakaru:20190723201021p:plain

入手可能なアイテムを数種類追加。今後じゃんじゃん増やす予定だけど、ゲームの「筋」をまだ決めてないから何が必要なのかわからんって感じだな。まー、今後もこの調子で行き当たりばったりで行くかな。その他にも、ドア、カメラ、モーションに追加修正した。


YouTube

うむ。


メイン

今回のメインは取れるアイテムを置いてみたってところ。アリシアから2m以内のものは取れる。

これは、2m先までレイが飛ぶようにして、何かに当たったらそこにAreaノードを移動させ、そこでエリアに入ったボディーをチェックしているダケ。取れるモノなら「おてて」アイコンが出る。

f:id:ore2wakaru:20190723195942p:plain

ただ、グローバル変数(オートロード)で各アイテムの取得数を管理しようとすると、「そんな変数、設定してるけど使ってないよ」っていうエラーが出る。これ、なんか回避方法はないかな? 今までは、

func _process(delta):

でも、「"delta"が使われてないよ」っていうエラーが出てたんだけど、これは、

func _process(_delta):

って感じに、"delta"を"_delta"と、アンダースコアを入れてやることで回避できることが分かった。(ボディーエンターとかでも、この方法が使える。)

グローバル変数のところ、なんかないかなー。

・・・と思ったら、func _ready():の中で適当に初期値入れれば大丈夫じゃん。オイ


他の追加修正箇所

 SpringArmノードを使用

カメラを前後左右に振る時、壁に当たってないか確認するため今まではRayCastを使ってたんだが、これをバッサリやめてSpringArmを使う事にした。これは、+Z方向にしかレイを飛ばさないRayCastって感じだな。子にしたオブジェクトを勝手にぶつかった所に配置してくれる。

f:id:ore2wakaru:20190723193459p:plain

まー、こんな感じで使うんだと思うけど、カメラを直に子にしないで何かほかのノード(Spatialとか?)を持って来た方が良くね? カメラはそこにlinear_interpolate()するようにした方が、壁に遮られた時一気に位置の移動がないから、カクカクしないんで良くね? って思うわ。ま、全然スプリングじゃないんだよな。プロパティに"spring"の項目追加よろしく。(あと、方向も変えられるように・・・)

 オーバーヘッドカメラを追加

これもカメラ関係。左右に移動させるショルダーカメラは以前くっつけたんだが、棚の上の方のモノとか見づらいんだよね。ま、これで前が見えやすいってのもある。

f:id:ore2wakaru:20190723193613p:plain

 「しゃがむ」を追加

上は見やすくなったけど、下はまだ見づらい。なので「しゃがむ(Crouch)」モーションの追加。自分でモーションつくるの大変だなー。 

f:id:ore2wakaru:20190723193744p:plain

 ドア、2種類追加

自動ドアと、鍵のかかったドアを追加。

f:id:ore2wakaru:20190723194431p:plain

以上。


次回

前回、IKアニメやるって思ってたんだが、アリシアの腕のボーンが片腕4本になってるのでIK使うと腕が4つに分かれちゃうんだよな。ちょっと使えなかった。だから、次回何になるのかは不明だな。行き当たりばったりだ。