[vci楽器制作メモ]叩いたら音を出す。そして弾き語りをする。

vciを使って弾き語り用のVR楽器(ただ叩いたらコードが鳴る)を作ってみたメモです。vciのバージョンはUniVCI-0.17です。

以下のようになりました。 

 

Lua言語なんて初めて聞いたのでさっぱりわからなかったけど、下の画像の様に配置して

f:id:alakialaca:20190509022050j:plain

 

 

onCollisionEnterのイベント関数をprint表示して、

Capsuleでそれぞれのコードのオブジェクト叩いたら、

function onCollisionEnter(item, hit)
    print(item)
    print(hit)

end

 

hitは「ぶつかったもの」でitemは「Capsule」となった。

 

参考:https://virtualcast.jp/wiki/doku.php?id=%E3%83%A2%E3%83%87%E3%83%AB%E4%BD%9C%E6%88%90:vci%E4%BD%9C%E6%88%90:%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9_vciscript:%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E9%96%A2%E6%95%B0

 

とりあえず音を出すにはこうするらしいので。

 

 vci.assets._ALL_PlayAudioFromName("音声ファイル名")

 
参考

 

VCI Sub Itemをアタッチしたオブジェクトに、Audio Sourceをアタッチして、AudioClipに音声ファイルを入れて

f:id:alakialaca:20190509022415j:plain

 こういう風に書いてみました。
 

function onCollisionEnter(item, hit)
    if hit == "C" and item =="Capsule" then
        vci.assets._ALL_PlayAudioFromName("C")
    end
    if hit == "Dm" and item =="Capsule" then
        vci.assets._ALL_PlayAudioFromName("Dm")
    end
    if hit == "Em" and item =="Capsule" then
        vci.assets._ALL_PlayAudioFromName("Em")
    end
    if hit == "F" and item =="Capsule" then
        vci.assets._ALL_PlayAudioFromName("F")
    end
    if hit == "G" and item =="Capsule" then
        vci.assets._ALL_PlayAudioFromName("G")
    end
    if hit == "Am" and item =="Capsule" then
        vci.assets._ALL_PlayAudioFromName("Am")
    end
end

 

これで、一応鳴らすことが出来ました。

 

 

条件分岐をだらだら書いてしまいましたが、

..文字列で連結できるみたいなので、音声ファイルやオブジェクト名を名前+数字にして、ループ内でインクリメントする数字で連結して、オブジェクトを探すようにすれば、たくさんのオブジェクトをだらだら条件分岐させずに探すことができるかな?

今度ためしてみます。