ユーザ用ツール

サイト用ツール


vci:sample:oncollision:no1

叩くとアニメーションをして音が鳴るドラムを作る


※この記事は「UniVCI-0.15」時点のものです。

サンプルデータ:https://seed.online/items/d4a40607b5b0906b7dba095731766838059f6ff04334d9a62957957e9c3ed9be

音源サンプル:


スティックで叩くとアニメーションをして音がなる簡単なドラムを作ってみましょう。
オブジェクトが衝突したときの処理になるので「onCollisionEnter」を使用します。

今回のVCIはドラムとスティックの2つのSubItemで構成されます。


アニメーションや音を鳴らすためにはUnity上でスクリプトだけではなく素材も準備する必要があります。
順番に見ていきましょう。

1. 音源を用意
2. アニメーションを用意
3. コライダを用意
4. スクリプトを記述


1. 音源を用意
音を鳴らすためには音源を準備しましょう
圧縮形式の音源ファイルでも、VCIを出力する際には非圧縮のwavファイルとして出力されます。
容量が増加することがあるので注意しましょう。
また、インポートする音源ファイルの形式によってはUnityのプレビュー上で再生できても出力すると音が鳴らないこともあります。
その場合は別のファイルフォーマットで試してみてください。

VCI Objectの階層にAudio Sourceでアタッチします。

2. アニメーションを用意
アニメーションファイルを作成する際はVCI Objectの階層でアニメーションクリップを作成しましょう。

VCIのアニメーションではループ再生のON/OFFを選択することができます。
一度きりの再生の場合、アニメーション終了時の変形で形状が固定されたままになります。
今回はドラムのスケールを変更し、一瞬大きくなり、またもとの大きさに戻るアニメーションを作りました。
音源ファイルと同様にVCI Object階層にAnimationでアタッチします。
このときAnimations内のelement 0~として登録をする必要があるので注意してください。

3. コライダを用意
物理衝突をさせるのでコライダとrigidbody設定が必要になります。
コライダをつける際にはSubItemの一番上の階層に、全てのコライダをつけるようにしましょう。
動くオブジェクトの場合、下の階層にコライダをつけてしまうと衝突時にばらばらになってしまいます。

SubItemそれぞれに、次のようにセットしました。
設定する値で特に重要なのは
・Use Gravity
・Is Kinematic
・Is Trigger
・Grabbable
です。それぞれどのような機能なのか覚えておきましょう。




GroupIDは0以外で全てのSubItemで同じ数字にしましょう。
同じ数字のSubItem同士はアイテムを掴んだ際にオーナー権が同じになり、
正しく物理挙動をするようになります。


4. スクリプトを記述
GameObjectの「VCI Object」コンポーネントのScriptsのSizeを1に指定し、
Nameに「main.lua」を記入、Sourceに以下スクリプトを記入します。

main.lua
function onCollisionEnter(item, hit)
    if (item == "drum" and hit == "stick") or (item == "stick" and hit == "drum") then
        vci.assets._ALL_PlayAudioFromName("drum_snd") --サウンドを鳴らす
        vci.assets._ALL_PlayAnimationFromName("drum_anm",false) --アニメーションを再生 true/falseでループのON/OFFを指定
        vci.assets.HapticPulseOnGrabbingController(item, 1500, 0.05) --itemを掴んでいるコントローラを振動させる
    end
end
vci/sample/oncollision/no1.txt · 最終更新: 2019/05/27 20:39 by navana

ページ用ツール