VCIスクリプトってのをやってみる(サンプラー)05完成
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

VCIスクリプトってのをやってみる(サンプラー)05完成

2019-06-28 19:00
  • 2
サンプラサンプラ騒いでたら「サンプラーってべつに音を出す機械のことじゃないからね」っと姉に突っ込まれるけどナンプラーでもバンプレーでもベントレーでもなんでもいいの。
私に必要なのは音の出るVCIなの。使い道は考えてないけど。

完成したよ!

動画だとこんな感じ
Twitter
https://twitter.com/tmplcn/status/1144538018545430528

SeedOnlineで公開しようかと思うしたんだけどロクな音が入ってないのでマジで使い道がないと思う。
サンプラー01
あとでホラーな音源(なんで?)入れたやつアップロードするね。

スクリプト書くのに絶対読まないと駄目なやーつ

VCIスクリプトリファレンス

https://virtualcast.jp/wiki/doku.php?id=vci:script:reference

情報量が多くて全部読むのは無理だ…目についたところだけ

Lua 5.2 リファレンスマニュアル

http://milkpot.sakura.ne.jp/lua/lua52_manual_ja.html

VCIで音楽を再生する

https://virtualcast.jp/wiki/doku.php?id=vci:sample:audio:tutorial


配列とループで短くしてみた
先生!できました!


自分、小学生のはじめてのプログラミング みたいな考え方しかできないので
初心者っぽく1行ずつ解説します。
これからVCI始める同志に捧げます。
music = { "Claps","Cymbal","Dog2","midnightVoice","Snare","Vibraslap"}--音ファイル名を配列に格納
local table = {}--空のテーブルを作る
local last_music=""--変数名を宣言(空の変数を作る)
for i = 1, #music do--配列”music”の数だけ処理を繰り返す
table[ "button0"..i ] = music[i]--ボタン名と音ファイル名を連想配列にする
end

function onTriggerEnter(item, hit)--なんかに触ったら
if (hit == "HandPointMarker" and string.find(item, "button") ) then--手にあたってしかも相手の名前に"button"って単語が入ってたら
if (last_music ~= "" )then--もし変数"last_music"が空じゃなかったら
vci.assets._ALL_StopAudioFromName(last_music)--last_musicを止めます
end
vci.assets._ALL_PlayAudioFromName(table[item])--触ったボタンに該当する音を鳴らします
last_music=table[item]--今鳴らした音の名前をlast_musicに代入します
end
end


自分がわかりにくかった行を追加で解説

for i = 1, #music do--配列”music”の数だけ処理を繰り返す
 table[ "button0"..i ] = music[i]--ボタン名と音ファイル名を連想配列にする
end

連想配列にしておくと、button01の音=Claps って直感で分かりやすくなるのでやってみたのだけど、リファレンス見ながらアレコレやってるうちにうまくいった ってパターンのやつなので こういう書き方ができる っていう参考にしてください。


if (hit == "HandPointMarker" and string.find(item, "button") ) then

and しかも、さらに みたいな意味
string.find (s, pattern) patternにマッチする文字を探す
前回書いたスクリプトでは何かに当たるたびに音が鳴っていたので手だけに反応するようにした。
具体的には手(HandPointMarker)で、触ったitemの名前にbutton01とかbutton02、みたいに"button"って文字が入っている時だけ以降の処理をするっていう行。


if (last_music ~= "" )thenvci.assets._ALL_StopAudioFromName(last_music)end

~= 等しくない、の意味。
起動して最初の1回目はlast_musicが空なのでそのままだとエラーになる
last_music ~= "" は初回でエラーになっちゃうのを防ぐ処理。
続いて前の音が鳴っている途中でボタンに触れたら音を止めて触ったボタンの音を出す処理をやってる。


------------------------------------------------------

スクリプトを書くのに便利だったもの

Lua スクリプト Windows用シミュレーター


VSCodeでは指摘されなかったlua文法エラーを教えてくれた!
VCIのComponentとかは当然判断してくれないし、けっこー古いアプリだから新しい書式とかには対応してないんだろう、たぶん。

Vキャスを立ち上げれば(VScodeでデバッガを使用する方法)同じようにエラーを確認できるんだけど1行書き直すごとにアップロードするのはすごく手間がかかる。
初歩の初歩 な構文エラーを連発する自分にはありがたかった。




上の例だと1行目の配列musicが宣言されてないよって教えてくれてる。
VSCodeはこの程度の初歩的なミスはミスと認めてくれないのや。知らんけど。



あ、あとVSI Sub ItemのグループIDを設定しておいた。
意味は分かんないんだけど なんとなくしといたほうがいいのかな?
って←ツッコミ待ち




以上、つたない記事にお付き合いありがとうございました。

ここ違うよ、とかこうしたほうがいいよ とかアドバイスありましたらコメントください
・ω・)ノシ









広告
×
完成おめでとうございます!
グループIDを設定しておくと、ゲストも使えるようになります。
(ゲストがこのVCIをつかむと所有権が移って使えるようになります)
1ヶ月前
×
ありがとうございます。グループID何のために必要かわかってなかったんですがw
なるほど、ゲストさんも使えるようになるのですね!
1ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。