Alicia in Godot Land #06「椅子の2回目 新移動システム」
椅子を移動させるには、アリシア本体のコリジョンを椅子のコリジョンにぶつけるしかなかったが、これは意外とメンドクサイ。で、「椅子のリモコン移動」を実装したぜ。椅子、楽々移動だ。それから、座った時、テーブルとの距離が気になってた。んで、「椅子に座りながらの前進移動」も実装した。新機能、2つ追加だ。
YouTube
まー、見ろって。
◆ 椅子のリモコン移動
右クリしてる時はアリシアの普通の移動ではなく、レイが当たったオブジェクトを移動させるようにしてるダケ。移動モードがアリシアなのかオブジェクトなのかを管理するフラグがあればイイ。それほど難易度は高くないな。
ちなみにレイが当たったオブジェクトはRayCast
のget_collider()
で取得できる。
◆ 椅子に座りながらの前進移動
椅子に座った時、アリシアのコリジョンをテーブルと当たらないように消している。当たり先のチェックはPhysicsBody
クラスのcollision_mask
か、set_collision_mask_bit(bit, value)
でセットだ。
通常アリシアは床も椅子もテーブルもコリジョンのチェックをしてるが、着席時には床と椅子のみのチェックに変更するってこと。着席時、椅子を前方に移動させると、(アリシアが椅子のコリジョンをチェックしているので)アリシアは押され、アリシアのコリジョンはテーブルに埋まる(テーブルは未チェックだからね)。で、椅子はさらに前に行こうとしてもテーブルにぶつかって先に進めない(椅子がテーブルのコリジョンをチェックしてるから)。こんな仕組みだ。
この辺は、レイヤとマスクの表を作っておかないと頭がゴチャゴチャになる。この先もっと複雑怪奇になっていくかもしれないな。注意。
/ | レイヤ | マスク | 備考 |
---|---|---|---|
床 | 1 | x | |
椅子 | 1 | 1,2 | 床とテーブルをチェック |
テーブル | 2 | x | |
アリシア通常時 | 6 | 1,2 | 床も椅子もテーブルもチェック |
アリシア着席時 | 6 | 1 | 床と椅子のみチェック |
まー、分かると思うけど、
一応。
次は・・・
まだ「椅子システム」には問題があるけど、「注文しすてむ」に移りたい。
紅茶とか、ケーキとか注文したら持って来てもらえる感じのを予定。(または、ピョコっと出て来るか。。。)