東中野ミュージックラボのブロマガ

VCIスクリプトってのをやってみる(サンプラー)02

2019/06/25 01:44 投稿

  • タグ:
  • VCI
  • VCIスクリプト
  • バーチャルキャスト
サンプラーが欲しい!持ち運び出来て、黒い本体とオレンジのボタンが6個 ボタンごとに音が入ってて触ると鳴るようにしたい。



VCIの作成方法

https://virtualcast.jp/wiki/doku.php?id=vci:make


  • VCI ObjectとVCI Sub Itemの関係とは
VCI Object自体に実体はなくて入れ物的なもの。スクリプトや所有者情報などはここに書く。
rootにVCI Objectがあって、その下に並列でVCI Sub Itemが並ぶように構成する。
Sub Itemを作ると自動でRigidbodyが追加される。

  • Collider(衝突を判定するためのオブジェクト。Unityには四角とか丸とかメッシュとかがあるらしい)をつける場合もSubItemに追加する。

  • Sub Item以下に入れ子構造は作れない(エラーになる)

GrabbaleとかRigidbodyとか、何かわかんない。
みゆみゆさんの記事を参考に設定しました。
https://qiita.com/miyumiyu/items/b3b3cfe6590ffc31b4ed

VCI SubItemコンポーネントの中身をやりたい挙動通りに修正します。

  • Grabbale → 持ちたいからON
  • Scalabe → スケール変更したいからON
  • Rigidbody.Gravity → 重力いらないからOFF
  • Is Kinematic → 空中に止まってほしいのでON

実際の設定はこんな感じにしました
body(黒い土台)は掴んで動かしたいので
  • Grabbale → 持ちたいからON
  • Scalabe → スケール変更しないからOFF
  • Rigidbody.Gravity → 重力いらないからOFF
  • Is Kinematic → 空中に止まってほしいのでON
ボタンのほうも同じように設定していくのだけど "つかんで、動かす”のは本体だけでボタンには必要ないから
  • Grabbale → つかまなくていいからOFF
  • Scalabe → GrabbaleをOFFにすると自動的にOFF
  • Rigidbody.Gravity → 重力いらないからOFF
  • Is Kinematic → 空中に止まってほしいのでON

掴むためにはコライダーが必要なので Box ColliderをAdd Componentします、
そして重要→後述するけど Is Trrigerにチェックを入れる

Colliderはオブジェクト同士が接触したときのいわゆる「当たり判定」をするものだけど、デフォルトでは接触したもの同士は反発しあうらしい。
このサンプラーでは本体と6個のボタンにそれぞれBoxColliderを入れたので、そのままだとそれらが反発しあい、たいへんなことになりました…。

下の動画はボタン6個のIs Trrigerにはチェックが入っているのだけど、bodyにチェックを入れ忘れたもの。暴れる暴れるw。
親切な方がこそっと 「Is Trriger入れ忘れてますよ」って教えてくださったのでした。
https://twitter.com/tmplcn/status/1142491009693040640


もしColliderを入れないと「ボタンを触った」という当たり判定ができません。
そこでIs Trrigerですが これは "触ったことは確認できましたがこのあとどうしますか?" というアクションを起こすためのトリガーとして使える ってことらしい。

VCI ObjectとVCI Sub Itemの設定




Colliderが暴れる問題は解決できたのですが このままだとbodyを手でつかんで動かしたときにボタンが置いてけぼりになってしまいます。

続く。




コメント

コメントはまだありません
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事