今回、オービスなどを見つけるレーダー探知機アプリをluaで作成しましたが、その時調べて実装した内容の覚書です。
下記の実装はluaアプリとして作成していますが、car modで独自に実装する場合でも、lua scriptで制御するパターンであれば、同じように制御可能です。
変数宣言、初期化
local sounds = ui.MediaPlayer()
再生する音データの設定 (sounddata.mp3というファイルと仮定)
sounds:setSource('./sounddata.mp3')
音データの設定時にすぐ再生
sounds:setSource('./sounddata.mp3'):setAutoPlay(true)
true:すぐ再生 false:すぐ再生はしない
再生音量設定
sounds:setVolume(1)
1の数字部分は0(音量ゼロ)~1(音量最大)の範囲で設定
音再生をループさせるかどうかの設定
sounds:setLooping(true)
true:ループ再生する false:ループ再生しない
音を再生
sounds:play()
音を停止
sounds:pause():setCurrentTime(0)
次playで再生すると最初から再生される。
音を一時停止
sounds:pause()
次playで再生すると止めた続きから再生される。
音をミュート(音は消えるけど、再生は続く?)
sounds:setMuted(true)
true:ミュートON false:ミュートOFF
これ以外にステータスをチェックするファンクションもあります。
音が再生中かどうか
sounds:playing()
戻り値がtrue →再生中 戻り値がfalse→停止中
あとは、リプレイとかで再生速度が変わった時の音再生スピードをリンクさせるかどうか?も選べるのかな・・・。(試してないのでわからないですが)
sounds:linkToSimulationSpeed(true)
true: リンクさせる false:リンクさせない
ほかにもいろいろファンクションたくさんありますが、すべては検証できていません。
音だけでなく、動画も同じ制御になるようです。
あとはこれを組み合わせて制御します。
「最初に変数の宣言・初期化をしたら、音源sounddata.mp3を設定し、ボリュームは最大、ループありで再生」であれば、
スクリプト冒頭で、
local sounds = ui.MediaPlayer()
sounds:setSource('./sounddata.mp3')
と書いて、function update(dt)内で、音を鳴らすタイミング部分に
sounds:setVolume(1)
sounds:setLooping(true)
sounds:play()
と書けば再生が始まるし、音を止めたいタイミング部分では
sounds:ended()
または
sounds:pause()
で音が止まります。
これらを使って作ったレーダー探知機アプリはこちら。
説明文にアプリのダウンロードURLも書いてありますので、興味のある方はダウンロードしてスクリプトを実際見ていただくのが早いかと思います。