https://linen.dev logo
ドアを開けてるときだけ音を鳴らしたい
# forum
u
こんな構文でやってみたんですけど(動作せず)、ドア開閉を検知する方法で最適なものってどうすればいいんでしょうか…
Copy code
function dooryudo(su){
 var DoorS = (Sigmoid(entity.doorMoveL) || Sigmoid(entity.doorMoveR));
if (DoorS > 0){
 su.playsound (Dmain, "train.50050_yuudo", 1, 1, true);
}
else{
    su.stopsound (Dmain, "train.50050_yuudo");
}
e
How about
Copy code
js
function dooryudo(su)
{
  var DoorS = max(entity.doorMoveL, entity.doorMoveR);
  if (DoorS > 0)
{
    su.playsound (Dmain, "train.50050_yuudo", 1, 1, true);
}
  else
{
    su.stopsound (Dmain, "train.50050_yuudo");
}
? PS. Not sure if
entity.doorMoveL
is available
u
ok...
entity.doorMoveLはrender scriptから参照しています
dooryudo - onUpdateより参照 entity.doorMoveL/R - renderscriptより参照 Dmain - 音声ファイルを参照 "train.50050_yuudo" - 音声ファイル(jsonよりコピー) 参照元は間違ってないはずなんですけどなぜかうまくいきません…
e
As passing variables across different scripts, personally I uses datamap to do that, but sometimes it just makes RTM more laggy Q\_Q
u
音声スクリプト内でドア開閉を検知するにはrenderから参照する以外方法はない感じですかね
データマップ変換ですか
u
サウンドスクリプトでも
Copy code
js
var entity = su.getEntity();
でentityからおおよそのデータは引っ張って来れます
u
おおよそというのは自分で指定した関数というよりもgettrainstatedataのようなもともと決まっている関数をつかえるってことですかね
u
詳しくは分かりませんが、一部使えない物がある(?)と聞いただけで、基本的にはentity.hoge…みたいな情報取得は大体できたと思います
u
なるほど
思ってみれば誘導音なのでドアが閉まっているか否かの判断はstatedataでもできるなということでそっち方向でやってみます
u
0か1かが分かればいい(アニメーション位置は考慮しない)ならそれでいいかと。完全に閉まっているか、そうでないかはtrainStateで取れるはずです
u
このUnknown Sourceがどういう意味なのか分かる方いらっしゃいますか?
単純に何かの参照元がないという意味のか、それ以上に何か詳細な情報をさしているのかがわかりません
タイトル変更と同時に現在のサウンドスクリプトです。
Copy code
function dooryudo(su,entity)
{
  if (entity.getTrainStateData(4) != 0)
{
    su.playsound (Dmain, "train.50050_yuudo", 1, 1, true);
}
  else
{
    su.stopsound (Dmain, "train.50050_yuudo");
}
}
TrainState方式に変更したものの、謎のクラッシュに見舞われています
e
Version check? Notice that in 1.12.2 you should use another form to retrive that value (where you'll get crashed if you use old method to retrive in 1.12.2)
u
Dmainの定義がされてなくないですか……?
独自追加の音声を設定するsound.jsonのあるフォルダ名を入れるのですが……
サウンドの追加方法は、ngt氏が公開しているモデルパック制作キット内のマニュアルを読むとよいと思います https://onedrive.live.com/?authkey=%21ACk-mEUC_7mf5lU&cid=F58928BACD47B1F5&id=F58928BACD47B1F5%211367&parId=F58928BACD47B1F5%211365&o=OneUp
u
Dmainの定義は別のところでされており、下のようにentityのvar位置を変えることでクラッシュは収まりました
Copy code
function dooryudo(su,entity)
{
    var entity = su.getEntity();
  if(!entity && entity.getTrainStateData(4) != 0){
    su.playSound(Dmain, "train.50050_yuudo", 1, 1, true);
}
else{
    su.stopSound(Dmain, "train.50050_yuudo");
}
}