car modで、なにか音を再生するときは、hornを使うことしか思いつきませんでしたが、今回twitterであ~るさんにlua scriptを使った方法を教えていただいたので、さっそくKNIGHT2000に実装しました。その覚書です。
今回追加したのは、ターボブースト時の音と、SPM起動時の音です。
まず、それぞれの音源を用意します。(今回はmp3ファイルにしました。)
そして、mp3ファイルをextensionフォルダにコピーします。
つづいて、extentionフォルダ内に新しくテキストファイル(今回はsound.luaという名前)を作成します。
KNIGHT2000用のsund.luaの中身はこうなってます。
local soundTurboBoost = ui.MediaPlayer()
local soundSPM = ui.MediaPlayer()
local soundSPMFlag = 0
soundTurboBoost:setSource('./turboboost.mp3'):setAutoPlay(false)
soundSPM:setSource('./spm.mp3'):setAutoPlay(false)function script.update(dt)
-- ターボブースト用設定
if car.extraA and car.speedKmh > 40 then
soundTurboBoost:play()
end
-- SPM用設定
if car.extraD and soundSPMFlag == 0 then
soundSPMFlag = 1
end
if not car.extraD then
soundSPMFlag = 0
endif soundSPMFlag == 1 and car.gas > 0.8 then
soundSPM:play()
soundSPMFlag = 2
end
end
最初の5行は初期設定。変数の定義と、音源ファイルの割り当てです。
ターボブースト音源用の変数がsoundTurboBoost、SPM音源用の変数がsoundSPMです。
soundSPMFlagはSPMの音源を1回だけ再生させるための制御用フラグです。
(extraDがずっとオンになっていると、play()で音源を再生するとループ再生になってしまうのを防ぐための処理です。)
function内はゲーム中ずっとループ処理しているところになります。
それぞれターボブースト発動時とSPM発動時の条件を書いて、その中でplay()を実行しています。
最後に、extensionフォルダ内のext_config.iniに以下の2行を追記します。
[SCRIPT_...]
SCRIPT = "sound.lua"
これで完了です。
それぞれ音源が再生されている様子はこちら。
これだけじゃ、応用できないじゃん!という方もいらっしゃると思うので、汎用的に使えそうな、ウィンカー音の設定も参考に載せておきます。
やりかたは一緒です。
1)まずウィンカーの音源を用意します。(例:blinker.mp3)
2)音源ファイルをextensionフォルダ内にコピーします。
3)下記のlua scriptを記載したテキストファイルをextensionフォルダ内に置く。(例:sound.lua)
local carSounds = ui.MediaPlayer()
carSounds:setSource('./blinkder.mp3'):setAutoPlay(false)
function update(dt)
if car.hazardLights or car.turningLeftLights or car.turningRightLights then
carSounds:play()
else
carSounds:pause()
end
end
4)ext_config.iniに2行追記。
[SCRIPT_...]
SCRIPT = "sound.lua"
です。3の部分ですが、音を出す条件として、ハザードか、左ウィンカーか、右ウィンカーのどれかがオン(true)になった時play()を実行して音を鳴らし続け、3つとも止まっているときは、pause()を実行して音を止めるという仕組みですね。
動画にするとこんなかんじです。