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

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

Alicia in Godot Land #06「椅子の2回目 新移動システム」

f:id:ore2wakaru:20190810175804p:plain

椅子を移動させるには、アリシア本体のコリジョンを椅子のコリジョンにぶつけるしかなかったが、これは意外とメンドクサイ。で、「椅子のリモコン移動」を実装したぜ。椅子、楽々移動だ。それから、座った時、テーブルとの距離が気になってた。んで、「椅子に座りながらの前進移動」も実装した。新機能、2つ追加だ。


YouTube

まー、見ろって。

 椅子のリモコン移動

右クリしてる時はアリシアの普通の移動ではなく、レイが当たったオブジェクトを移動させるようにしてるダケ。移動モードがアリシアなのかオブジェクトなのかを管理するフラグがあればイイ。それほど難易度は高くないな。

ちなみにレイが当たったオブジェクトはRayCastget_collider()で取得できる。

 椅子に座りながらの前進移動

椅子に座った時、アリシアコリジョンをテーブルと当たらないように消している。当たり先のチェックはPhysicsBodyクラスのcollision_maskか、set_collision_mask_bit(bit, value)でセットだ。

通常アリシアは床も椅子もテーブルもコリジョンのチェックをしてるが、着席時には床と椅子のみのチェックに変更するってこと。着席時、椅子を前方に移動させると、(アリシアが椅子のコリジョンをチェックしているので)アリシアは押され、アリシアコリジョンはテーブルに埋まる(テーブルは未チェックだからね)。で、椅子はさらに前に行こうとしてもテーブルにぶつかって先に進めない(椅子がテーブルのコリジョンをチェックしてるから)。こんな仕組みだ。

この辺は、レイヤとマスクの表を作っておかないと頭がゴチャゴチャになる。この先もっと複雑怪奇になっていくかもしれないな。注意。

/ レイヤ マスク 備考
1 x
椅子 1 1,2 床とテーブルをチェック
テーブル 2 x
アリシア通常 6 1,2 床も椅子もテーブルもチェック
アリシア着席 6 1 床と椅子のみチェック

まー、分かると思うけど、

  • コリジョン_レイヤ: 自ボディーが存在する空間のこと(自分存在空間・自分の居る場所)
  • コリジョン_マスク: 何か他にボディーがあるかどうかチェックする先の空間のこと(チェック先空間・他人を探す場所)

一応。


次は・・・

まだ「椅子システム」には問題があるけど、「注文しすてむ」に移りたい。

紅茶とか、ケーキとか注文したら持って来てもらえる感じのを予定。(または、ピョコっと出て来るか。。。)