見出し画像

第4回【コンポーネント紹介】GrabbableReceiverSurface

Resoniteのコンポーネント紹介記事を書きます。
4回目のテーマは『表面に引き寄せる』です。


GrabbableReceiverSurface(グラバブル レシーバー サーフェス)

手から放した物を表面に引き寄せるコンポーネント

使い方
引き寄せる側(棚やテーブル等)のスロットにアタッチ。
Transform > Interaction > GrabbableReceiverSurface
コライダーも必要です。
各設定を適当に行います。

引き寄せられる側(皿やコップ等)のGrabbableコンポーネントのReceivable設定がFalseだと、引き寄せ判定から除外されます。

テーブルにコップを置く。ホワイトボードに写真を張り付けるなどなど、様々な用途で使います。
地面や床に設定することで、物が落ちる重力を疑似的に再現できます。

似たようなコンポーネントにGrabbableParenterがありますが、親子化のみなので、引き寄せや親子解除はできないです。
特定の位置に引き寄せて親子化する場合はSnapperコンポーネントを使います。

Enabled:
このコンポーネントを有効にするかどうか。

ParentPlaced:
引き寄せた物を、子スロットに入れて親子化する。
これをTrueにすると、引き寄せた後くっ付きます。さらに、引き寄せられた物がどんどん積み上がっていきます。

OverrideParent:
上記で親子化した物を引きはがした際に、再親子化する先を指定する。
指定しなければ、グラバブルコンポーネントの設定に従う。

TweenTime:
引き寄せる動作の時間。

MaxDistance:
引き寄せ判定の距離。
距離は使用する場面に合わせて調整した方が良いです。

手を放した物体が近くにある時、その物体のバウンディングボックスの中心位置を基準に計算が開始されます。
そこへ向かってレイキャスト処理を行い、Hitしたコライダー表面との距離が0になるまで移動させるような処理が働きます。
大きなアイテムがなかなか引き寄せられない場合、アイテムの中心を近付けるイメージで操作すると引き寄せられるはずです。
引き寄せ時の判定は、見た目ではなくコライダーです。

Offset:
引き寄せた物の位置調整。
写真等の薄い物を引き寄せると、ピッタリ重なってチラつくことがあります。そんな時は0.001mぐらい浮かせてあげましょう。

CheckOffset:
引き寄せ判定の位置調整。

Directions(list):
引き寄せる方向。
初期値はy-1なので、下方向に引き寄せる。

ここでは方向を指定するので、1か-1で設定すると分かりやすいです。
棚にメッシュコライダーを設定した場合。y-1だと棚の上に物が置けるようになります。棚の側面や裏面はy-1(下)方向ではないので引き寄せる事はありません。

TagFilter:
スロットのタグで引き寄せる物を選別する。
TagFilterを設定することで、引き寄せる物を限定する事ができます。

インスペクターを引き寄せたくない場合は、モードをBlacklistにしてListに「Developer」と入力してみてください。(インスペクター等は、もともとスロットのタグ欄にDeveloperと入力されています。)

Mode:
選別方法。
Blacklist(拒否)とWhitelist(許可)の2種類。

List(list):
タグのリスト。
Addを押すと増える。

タグは英数字だけではなく、日本語や記号も使えます。
スペルミスはあるあるなので、なるべくコピペした方が安心です。レーザーで値を掴んで、入れたい先にレーザーを当てて手を放すとコピペできます。


蛇足

Fluxで、引き寄せた瞬間のインパルスが取得できる専用のノードがあります。
次回のコンポーネント紹介記事は、似た機能の「スナッパー」です。こちらは、表面に引き寄せるのではなく、ターゲットに移動します。アバターの帽子や眼鏡を付け外しする際に、とても便利なコンポーネントです。

おわり

この記事がお役に立てたのなら、『スキ』『サポート』『フォロー』してくれると嬉しいです。
皆様のご支援と応援が活動継続の力となります。

コンポーネントに関するご質問やご要望、豆知識等も募集しております。
ぜひ、コメント欄にお書きください。

他のコンポーネント紹介記事はこちら↓
『Resonite コンポーネント紹介』マガジン

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