Resoniteで複數の値を同期させる方法【ValueField・ValueCopy】
どうも、萬朶櫻です。
複數の物體やコンポーネントに同じ値を當てはめる
その後、その値を一括で變更するかもしれない
このやうな場合、いちいち手入力をしてゐると大變な勞力になるでせう。
そんな時に便利なコンポーネントがあるので、今囘はそれを紹介してみます。
複數の數値を「ValueField<T>」で一括管理してみる例
ValueFieldの場所は「Data」の中。
このコンポーネントで定めた値をコンポーネント等の項目に驅動することで、複數のコンポーネント項目を一括管理することができる。
物體とコンポーネントの準備
例として次のやうな物を作る。
それぞれの物體を全て同じ向き・同じ速さで移動させたい。
まづは「Box - Parent」「Cone - Parent」「Sphere - Parent」の3物體にそれぞれコンポーネント「Panner3D」を充てた。
Panner3Dの「Target」に各物體のPositionを當てはめて、「Speed」のxyz値を設定することで、その物體に等速直線運動をさせることができる。
それぞれの物體を全て同じ向き・速さで移動させたいとき、各物體の「Speed」値などをいちいち個別に入力するのは面倒である。
また、後から向きや速さを變更する時にも多くの手間がかかる。
そこで、このやうに、適當な所にスロットを作り、「ValueField<float3>」を充てる。
「Value」のXの値を1にしておく。
ValueFieldの値を各Pannerに驅動する
次に
ValueField<float3>の「Value」を右クリックで摑む
「Box - Parent」をダブルクリックしてBoxの内容を表示させる
Boxの内容が表示できたら、
「Panner3D」の「_speed」のところにカーソルを合はせ、離す。
するとこのやうなメニューが出るので、上の「Drive」を選ぶ。
すると、このやうに、「ValueField<float3>」で設定した値と同じ値が「Panner3D」の「_speed」に充てられる。
これと同じ作業を「Cone - Parent」「Sphere - Parent」にも行ふ。
すると、全ての物體が同じ方向、同じ速度で移動を始める。
「ValueField<float3>」の値を變更すると、それに應じて各物體の動きも同時に變はる。
これで各物體の動きを一括管理することができた。
數値を驅動するためのコンポーネント「ValueCopy<T>」について
單體で充てることもできる
先述の通り、ある値を別の値に驅動させると、そのデータ型に應じて「ValueCopy」が自動で生成される。
他のコンポーネントと同樣に「コンポーネントをアタッチ」から充てることもできる。
場所は「Transform」の「Drivers」の中。
この方法で充てると、どの値をどの値に驅動させるかが未設定なので、そのあたりを設定する必要がある。
Source: 驅動させる元の値。ここに入れた項目の數値を變更するとTargetの値が追從する
Target: 驅動する先の値。通常、ここの項目の値は變更できない
WriteBack: チェックを入れると、Target側の値も變更できるやうになる。つまり、雙方向に驅動が可能になる
「新規作成」から作れる3D物體にも「ValueCopy」が最初から仕込まれてゐる
例へばこの「Box」は、ValueCopy<float3> で「BoxMesh」のsizeをSourceに、「BoxCollider」のsizeをTargetにしてゐる。
これは、メッシュの大きさと、當たり判定の大きさとを一致させるためである。
この記事が気に入ったらサポートをしてみませんか?