1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【VRChat】VRC_TriggerのSetMaterialで色変えギミックを作る

Posted at

#はじめに
VRChatワールド『mellow frame』のギミックを作るメモです。
ミラーのOnOffなどのちょっとしたギミックを扱ったことがあり、そこからもっとギミックを作ってみたいという方でしたらなにか参考になるかもしれません。
無駄や間違いが含まれている可能性がありますので、ご指摘いただけるとありがたいです。

思想編はnote

###環境
unity: Unity 2018.4.20f1
VRCSDK2: 2021.02.23.11.41

#どんなギミック?

マテリアルオブジェクトでパネルに触れると、ワールドオブジェクトの色を変えることができます。

これはVRC_TriggerのOnEnterTriggerを利用しSetMaterialを発動させ、パネルとワールドオブジェクトのマテリアルを連動して変更させています。
つまり、コライダー同士が接触したときに片方のマテリアルを変更するという遊びです。

#用意するもの

  • マテリアルオブジェクト
  • パネル
  • ワールドオブジェクト
  • マテリアル16種

#作り方
##1.モデリング
色を変えられる部分はケーキ+お皿の合計10層です。そのためモデリングの段階でオブジェクトを分けておきます。
210319_02_1-1.jpg
210319_02_1-2.jpg

##2.unityの準備
210319_02_2-1.jpg
ギミック用にレイヤーを10層設定します(画像のように対応させます)。
マテリアルを16種作ります。

##3.モデルの準備
コライダーを付与し、Is Triggerにチェックを入れておきます。
パネルとワールドオブジェクトの初期のマテリアルを設定しておきます。

##4.マテリアルオブジェクトの設定
210319_02_4-1.jpg
[VRC_Pickup]を付与します。AutoHoldをyesにするとデスクトップモードのときラクです。
空中で静止させたいので[Rigibody]のUse Gravityはチェックを外し、Is Kinematicにチェックを入れます。
レイヤーはPickupにします(VRC_Pickupを付与すると自動的に設定されます)。
[VRC_Object Sync]を付与します。

210319_02_4-2.jpg
[VRC_Trigger]を付与します。
◇OnEnterTrigger→AlwaysBufferOne
◆Layers: (上から1層目)
◇Actions: SetMaterial
◆Receivers: (パネルとワールドオブジェクトの上から1層目)
◇Material: (このマテリアルオブジェクトの色)

同じ[VRC_Trigger]のなかに10層分設定します。◇は固定、◆はそれぞれ変えてください。

さらにマテリアルオブジェクトの数だけこの設定をします(Hierarchy部分。今回は16種)。最後のMaterialはそれぞれの色を設定してください。

##5.パネルの設定
210319_02_5-1.jpg
◆各オブジェクトにそれぞれの層のレイヤーを割り当てます。

[VRC_Trigger]を付与します。
◇OnEnterTrigger→AlwaysBufferOne
◇Trigger Individuals: チェックしない
◇Layers: Pickup(どのレイヤーから影響を受けたいか)
◇Actions: SetMaterial
◆Receivers: (パネルとワールドオブジェクトの上から1層目)
◇Material: none
分けたオブジェクトごとに設定します(Hierarchy部分。今回は10層)。◇は固定、◆はそれぞれ変えてください。

##6.ワールドオブジェクトの設定
210319_02_6-1.jpg

◆各オブジェクトにそれぞれの層のレイヤーを割り当てます。

[VRC_Trigger]を付与します。
◇OnEnterTrigger→AlwaysBufferOne
◇Trigger Individuals: チェックする
◇Layers: Pickup(どのレイヤーから影響を受けたいか)
◇Actions: 設定しないでおく
分けたオブジェクトごとに設定します(Hierarchy部分。今回は10層)。レイヤーのみそれぞれ設定してください。

#Componentの設定を一挙にするには
マテリアルオブジェクトの場合
1つだけ設定したものをコピペする。この記事では“同じ[VRC_Trigger]のなかに10層分設定します”の後です。

パネル,ワールドオブジェクトの場合
Hierarchyでオブジェクトを複数選択し、Add Componentをするとできます。

#課題
Componentの設定が面倒→アイテムが増えたときの設定が手間です。カスタムトリガーを使うといいのだろうと思います。UIとロジックの分離というやつですね……

ワールドオブジェクトに触れても色が変わる→そもそもワールドオブジェクトに[VRC_Trigger]がいらないのかと思ったがなくても発生する。
#参考(順不同)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?