嘘バルズ構築記録#6

手札の操作

とりあえず実装すべきはマウスオーバーとドラッグ。

Godotの3Dオブジェクトに対するマウス操作

カードにArea3Dと適当なコリジョンを設定して、input_ray_pickableがtrueならCollisionObject3Dのマウス系シグナルを飛ばしてくれるので、それを使ってごにょごにょする。

マウスオーバー

mouse_entered()が来たら実行し、mouse_exited()が来たら元に戻す。
Area3Dの位置はそのままにして、表示する部分だけを動かすとふらふらしない。

ドラッグ

input_event()でドラッグが始まったかを検知し、手札のinput_ray_pickableをfalseにしてドラッグするカードを変数に入れる。
ドラッグするカードが存在する場合、_physics_process()内で、マウスの位置に対するカメラからの法線とドラッグ平面との交点を求めて、その位置にカードを表示する。
最初は_*process()ではなくドラッグ平面に対応するArea3D(WorldBoundaryShape3D)でのマウスイベントとしてドラッグ処理をしていたが、マウスイベントは同時に一つしか発生せず、多様な選択状態を一つのマウスイベント関数で実装するのはあまり健全ではないような気がしたので、別にマウスイベントを発生させられる方式にした。

動いてるところ


盤面選択

ドラッグしながら盤面を選択する処理は、ドラッグではなくクリックで盤面を選択する処理と、実装を共有したい。
まずは盤面選択の構造を整理する必要があり、そのためにはクライアント上のデータ、つまりはサーバからクライアントへ送るデータをそろそろ規定したい。
よって、次はサーバからクライアントに送られるデータのうちの盤面情報をある程度規定していく。

GitHub

コードの量も増えてきたので、バックアップも兼ねて。

今回やったのはこの辺

https://github.com/Juna-Idler/Lievals/blob/af9eaacd1f0019e23a2bee1995dfe8ce7325370d/client/match_scene.gd

この記事が気に入ったらサポートをしてみませんか?