この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
vci:sample:oncollision:no1 [2023/05/09 12:44] pastatto 統合リンク修正 |
vci:sample:oncollision:no1 [2023/10/02 20:17] (現在) pastatto Audioも非推奨だったためデータ修正 |
||
|---|---|---|---|
| ライン 1: | ライン 1: | ||
| ====== 叩くとアニメーションをして音が鳴るドラムを作る ====== | ====== 叩くとアニメーションをして音が鳴るドラムを作る ====== | ||
| + | [[https://developer.virtualcast.jp/vci-docs/api/events/onCollisionEnter.html | onCollisionEnter]]を使用した、アイテムをぶつけると音やアニメーションが再生されるサンプルです。 | ||
| - | > ※この記事は「UniVCI-0.15」時点のものです。\\ | ||
| === サンプルデータ === | === サンプルデータ === | ||
| https://virtualcast.jp/products/5315c1a2c3ec38eb95c65db2db65299ddb58c39943e659e83033e651019c5f72 | https://virtualcast.jp/products/5315c1a2c3ec38eb95c65db2db65299ddb58c39943e659e83033e651019c5f72 | ||
| + | |||
| + | {{ :vci:sample:oncollision:チュートリアルドラム.zip |}} | ||
| === 音源サンプル === | === 音源サンプル === | ||
| ライン 15: | ライン 17: | ||
| 今回のVCIはドラムとスティックの2つのSubItemで構成されます。\\ | 今回のVCIはドラムとスティックの2つのSubItemで構成されます。\\ | ||
| - | {{vci:sample:oncollision:tutorial_drum_1.png?direct&600|}} | + | {{ vci:sample:oncollision:tutorial_drum_1.png?direct&600 }} |
| アニメーションや音を鳴らすためにはUnity上でスクリプトだけではなく素材も準備する必要があります。\\ | アニメーションや音を鳴らすためにはUnity上でスクリプトだけではなく素材も準備する必要があります。\\ | ||
| ライン 26: | ライン 28: | ||
| **1. 音源を用意**\\ | **1. 音源を用意**\\ | ||
| - | 音を鳴らすためには音源を準備しましょう\\ | + | 音を鳴らすためには音源を準備しましょう。\\ |
| 圧縮形式の音源ファイルでも、VCIを出力する際には非圧縮のwavファイルとして出力されます。\\ | 圧縮形式の音源ファイルでも、VCIを出力する際には非圧縮のwavファイルとして出力されます。\\ | ||
| 容量が増加することがあるので注意しましょう。\\ | 容量が増加することがあるので注意しましょう。\\ | ||
| ライン 39: | ライン 41: | ||
| - | **2. アニメーションを用意**\\ | + | 2. VCISubItemに「**Animation**」コンポーネントをアタッチし、\\ |
| - | アニメーションファイルを作成する際はVCI Objectの階層でアニメーションクリップを作成しましょう。\\ | + | アニメーションを1つ作成します。\\ |
| - | {{vci:sample:oncollision:tutorial_drum_3.png?direct&400|}} | + | 詳細:[[vci/sample/animation/tutorial2]] |
| VCIのアニメーションではループ再生のON/OFFを選択することができます。\\ | VCIのアニメーションではループ再生のON/OFFを選択することができます。\\ | ||
| ライン 47: | ライン 49: | ||
| 今回はドラムのスケールを変更し、一瞬大きくなり、またもとの大きさに戻るアニメーションを作りました。 | 今回はドラムのスケールを変更し、一瞬大きくなり、またもとの大きさに戻るアニメーションを作りました。 | ||
| - | VCI Object階層にAnimationでアタッチします。\\ | ||
| - | このときAnimations内のelement 0~として登録をする必要があるので注意してください。 | ||
| **3. コライダを用意**\\ | **3. コライダを用意**\\ | ||
| ライン 77: | ライン 77: | ||
| ===== VCIスクリプト ===== | ===== VCIスクリプト ===== | ||
| <file lua main.lua> | <file lua main.lua> | ||
| + | local transform = vci.assets.GetTransform("drum") | ||
| + | local animation = transform.GetAnimation() | ||
| + | local audioSources = transform.GetAudioSources() | ||
| + | |||
| + | ---[SubItemの所有権]アイテムにCollider(not Trigger)が接触したときに呼ばれる。 | ||
| + | ---@param item string @SubItem名 | ||
| + | ---@param hit string @Collider名 | ||
| function onCollisionEnter(item, hit) | function onCollisionEnter(item, hit) | ||
| if (item == "drum" and hit == "stick") or (item == "stick" and hit == "drum") then | if (item == "drum" and hit == "stick") or (item == "stick" and hit == "drum") then | ||
| - | vci.assets._ALL_PlayAudioFromName("drum_snd") --サウンドを鳴らす | + | audioSources[1]._ALL_Play(1.0, false) --サウンドを鳴らす |
| - | vci.assets._ALL_PlayAnimationFromName("drum_anm",false) --アニメーションを再生 true/falseでループのON/OFFを指定 | + | animation._ALL_Play(false) --アニメーションを再生 true/falseでループのON/OFFを指定 |
| - | vci.assets.HapticPulseOnGrabbingController(item, 1500, 0.05) --itemをつかんでいるコントローラを振動させる | + | vci.assets.HapticPulseOnGrabbingController(item, 1500, 0.05) --itemを掴んでいるコントローラを振動させる |
| end | end | ||
| end | end | ||