この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 最新リビジョン 両方とも次のリビジョン | ||
vci:sample:oncollision:no1 [2022/09/05 18:02] pastatto ↷ 移動操作に合わせてリンクを書き換えました。 |
vci:sample:oncollision:no1 [2023/09/29 20:25] pastatto 非推奨のAPIを書き換えてサンプルの差し替え |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
====== 叩くとアニメーションをして音が鳴るドラムを作る ====== | ====== 叩くとアニメーションをして音が鳴るドラムを作る ====== | ||
+ | [[https://developer.virtualcast.jp/vci-docs/api/events/onCollisionEnter.html | onCollisionEnter]]を使用した、アイテムをぶつけると音やアニメーションが再生されるサンプルです。 | ||
- | > ※この記事は「UniVCI-0.15」時点のものです。\\ | + | === サンプルデータ === |
- | サンプルデータ:https://seed.online/items/d4a40607b5b0906b7dba095731766838059f6ff04334d9a62957957e9c3ed9be | + | https://virtualcast.jp/products/5315c1a2c3ec38eb95c65db2db65299ddb58c39943e659e83033e651019c5f72 |
- | 音源サンプル:\\ | + | {{ :vci:sample:oncollision:チュートリアルドラム.zip |}} |
+ | |||
+ | === 音源サンプル === | ||
{{ vci:sample:oncollision:drum_snd.wav |}} | {{ vci:sample:oncollision:drum_snd.wav |}} | ||
+ | |||
+ | ===== 手順 ===== | ||
スティックで叩くとアニメーションをして音がなる簡単なドラムを作ってみましょう。\\ | スティックで叩くとアニメーションをして音がなる簡単なドラムを作ってみましょう。\\ | ||
ライン 12: | ライン 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上でスクリプトだけではなく素材も準備する必要があります。\\ | ||
ライン 23: | ライン 28: | ||
**1. 音源を用意**\\ | **1. 音源を用意**\\ | ||
- | 音を鳴らすためには音源を準備しましょう\\ | + | 音を鳴らすためには音源を準備しましょう。\\ |
圧縮形式の音源ファイルでも、VCIを出力する際には非圧縮のwavファイルとして出力されます。\\ | 圧縮形式の音源ファイルでも、VCIを出力する際には非圧縮のwavファイルとして出力されます。\\ | ||
容量が増加することがあるので注意しましょう。\\ | 容量が増加することがあるので注意しましょう。\\ | ||
ライン 36: | ライン 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を選択することができます。\\ | ||
ライン 44: | ライン 49: | ||
今回はドラムのスケールを変更し、一瞬大きくなり、またもとの大きさに戻るアニメーションを作りました。 | 今回はドラムのスケールを変更し、一瞬大きくなり、またもとの大きさに戻るアニメーションを作りました。 | ||
- | VCI Object階層にAnimationでアタッチします。\\ | ||
- | このときAnimations内のelement 0~として登録をする必要があるので注意してください。 | ||
**3. コライダを用意**\\ | **3. コライダを用意**\\ | ||
ライン 72: | ライン 75: | ||
Nameに「main.lua」を記入、Sourceに以下スクリプトを記入します。 | Nameに「main.lua」を記入、Sourceに以下スクリプトを記入します。 | ||
+ | ===== VCIスクリプト ===== | ||
<file lua main.lua> | <file lua main.lua> | ||
+ | local transform = vci.assets.GetTransform("drum") | ||
+ | local animation = transform.GetAnimation() | ||
+ | |||
+ | ---[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") --サウンドを鳴らす | + | vci.assets.audio._ALL_Play("drum_snd", 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 |