拘束具
概要
このトーラスに腕を通すと、そのユーザーは右腕を動かすことができなくなってしまいます。どのようにしてこの機能を実現しているのでしょうか?
解説
全体
これが全体のLogiXの様子です。左はトーラスから来ています。そして最後はSet Slot Active Selfが働いています。上のSet Slot Active SelfではTrueが入り、下ではFalseが入っています。Falseが入ると、腕が動かなくなるという仕組みです。
Slotの中身
最初に右下のSlot変数に何が入るか見てみましょう。左のGet Active Userによりトーラスを握っているUserを得ます。そしてBody Node Slot、Find Child By Nameを通じてRight Hand ProxyのSlotを得ます。これが右下のSlot変数に入る内容です。
トーラスをつかんでいるとき
最初はトーラスをつかんでいて、これを拘束したい別のユーザーに近づけます。このときには動かなくなったら困りますので、動けるようにする必要があります。これを上の部分で行っています。Is Grabbable Grabbedにより、このトーラスが握られているかどうかを判定します。これがTrueの時にはFire On TrueでImpulseをSet Slot Active Selfにだします。ここではTrueが入力されており、動けます。
トーラスから手を離すと
そしてトーラスから手を離すと下のSet Slot Active SelfでRight Hand ProxyのSlotがFalseにされます。つまり動けなくなります。
おわりに
この拘束具はSet Slot Active Selfを使って、Activeかそうでないかを設定することによりアバターの動きを決めていました。実際に動けなくなると、かなりおかしなことが起きます。自分一人の時には助けが誰もいませんから、緊急リスポーンが必要になるかもしれませんね。
関連するノード
Set Slot Active Self, Is Grabbable Grabbed, Get Active User, Body Node Slot, Fire On True, Write
追記
作者のAetorizさんはこの拘束具を拡張して、両手、両足、首、腰まで動けなくする機能を追加しています。参考までにそのLogiXを下記に示しておきましょう。たしかにRight Hand Proxyの他にいくつものProxyが設定されていることが分かります。しかし、とても根気のいるプログラミングだったでしょう。