見出し画像

minatchiのResonite覚え書き集①―Component編

☆ご注意

 自分が思い返すために書いた記事なので、事実誤認等があるかも知れません!参考にするのはいいですが自己責任で!
 掲載順はバラバラですので、初歩的なものからそうでも無さそうなものまでランダムです。


◎主文

1.シェイプキー(1つ)をインタラクトでトグルさせる

  • TouchToggleBooleanValueDriver<float>を使用

  • BooleanValueDriverのTargetFieldにトグルさせたいシェイプキーを入れる

    • Valueは0/1(よく100にしてエラいことになるので注意)

  • TouchToggleの設定はデフォルトのままでOK

    • StateのチェックがインタラクトするごとにON/OFFされているかを確認

  • TouchToggleのStateをBooleanValueDriverのStateにDriveさせる

    • TouchToggleのStateを掴んでValueDriverのStateの上で放せばいいはず

  • これで、インタラクトするごとにON/OFFされるTouchToggleのStateがValueDriverと連動し、シェイプキーの値が0/1.00でトグルするようになる、はず

2.モノを円周上に並べる

  • CircleAlignerを使用

  • 整列させたいモノを空スロットの子に格納して、親となった空スロットにCircleAlignerをアタッチすると良い

  • 全てのモノの向きを変えたい場合は、RotationOffsetで調節

3-1.コンテキストメニューの基本

  • アバターのスロット直下に空のスロットを作成し、そこに以下のコンポーネントをアタッチ

  • 子メニューを作成したい場合は、さらにこちらのコンポーネントをアタッチ

    • ContextMenuSubmenu……ItemsRootに作成したスロット自身をセット

    • その上で、空スロットにさらに子のスロットを作成し、ContextMenuItemSourceをアタッチ、Labelに好きな名前を入れる

ここが分かりやすい (あるいはここ

3-2.コンテキストメニューでいろいろやる

【オブジェクトのON/OFF】

  • ContextMenuItemSourceと同じ場所にButtonToggleをアタッチ

  • TargetValueに目的のオブジェクトがあるスロットのActiveを入れる

【シェイプキーの操作(一方通行)】
選択するとシェイプキーの値が一定の値になる、それだけ。

  • ContextMenuItemSourceと同じ場所にButtonValueSet<float>をアタッチ

  • TargetValueに目的のシェイプキーを、SetValueにセットしたいシェイプキーの値(1~0)をセット。

【シェイプキーの操作(トグル)】

  • ContextMenuItemSourceと同じ場所に、以下のコンポーネントをアタッチ

    • ButtonToggle……TargetValueにBooleanValueDriverのStateをセット

    • BooleanValueDriver<float>……TargetFieldにDynamicBlendShapeDriverの中でセットした目的のシェイプキーのValueをセットし、FalseValueに1、TrueValueに0(あるいは逆)

    • DynamicBlendShapeDriver……Rendererに動かしたいシェイプキーが入っているSkinedMeshRendererをセット、「Update BlendShape Targets」をクリック

      • BlendShapes(List)の「Add」をクリックし、出てきたリストのBlendShapesNameに目的のシェイプキー名を手入力する

4.掴んだ物を複製させる

  • 対象物の親に空のオブジェクトを追加し、そこにGrabInstancerをアタッチ

  • Templateスロットに複製させたいアイテムをセット

  • この際、子にある複製させたいアイテムのGrabbableは切っておくこと(切らないと複製元を掴んでしまいうまくいかない)

Kyokai_nanameを掴んだときに複製させたい場合
  • ただし、掴んで出現するオブジェクトは、オブジェクトの一つ上の階層(上図の場合Kyokai_Setの下)に出てしまうので、例えばテンプレート集(Kyokai_Set)の下に複数のGrabInstancerを置く、というようなことをしたい場合、このままだとKyokai_Setを掴んだときにひな形と一緒に複製したアイテムも動いてしまう、という問題がある

Kyokai_nanameがKyokai_Setの直下に出現
  • これを防ぐためには、Kyokai_Setの直下に空のオブジェクトを作りGrababbleのみを追加、各々のGrabInstancerのContainerTemplateに作った空オブジェクトをセットし、EnableGrabbableのチェックを外す

  • そうすると、掴んだときに空オブジェクト(Grabbableがついてる)の子に、複製させたいアイテムがGrababbleの切れた状態で格納され、空オブジェクトの一つ上の階層(下図の場合Kyokai_Setと同階層)に出現するので、テンプレート集(Kyokai_Set)とは縁を切ることができる

容器となる空オブジェクトの作成
GrabInstancerの設定

いいなと思ったら応援しよう!