この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
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 |