https://linen.dev logo
交互表示方向幕
# forum
a
マジで無知無知の無知なので、おかしいこと言ってる部分あると思いますが、許してください....🥹ぴえん?
f
方向幕を設定した時に日本語と英語表示を交互にすると言うことですね
一応確認なのですが、モデリングはできますかね? それで結構変わってくるので...
a
ものすごく最低限のモデリングなら...
最低限がどの程度だよって感じか
あと、RTMの.jsをうまく扱えるようになるにはどんなことが効果的なのか聞きたいです!
f
それなのであれば過去スレの https://discord.com/channels/799152792518393917/1371469075124977827/1373920662833594389 これを使えるでしょう!
Copy code
//方向幕の取得
var dest = entity.getTrainStateData(8);

if(Date.now()%2000>1000){
 destJ_[dest].render(renderer); //日本語幕を描画
}else{
 destE_[dest].render(renderer); //英語幕を描画
}
var 変数の名前
で変数を作って` = 取得した値とか ;` この場合`entity.getTrainStateData(8);`で設定している方向幕の値が取得できます 車両から取得できる値に関しては https://x.com/hi03_s/status/1044613004644376577 ↑これを参考にしてみるといいでしょう
`if`を使って`Date.now()%2000>1000`使って交互に表示させる感じですね `Date.now`の2000とか1000とかのとこはミリ秒で1000=1秒です
a
なるホジョ
表示非表示する時ってどの方法でが一番おすすめですか?
f
この方法は方向幕のテクスチャをオブジェクトに入りつけて表示させてるので、無表示の時は消灯状態のオブジェクトを呼び出せばできます
(説明下手ですんません)
a
オブジェクトのテクスチャを直接変えてるってことですか?
f
イメージはこんな感じ
黄色⇒obj1(消灯状態) 青色⇒obj2(方向幕A) 赤色⇒obj3(方向幕B) これらにはあらかじめテクスチャが貼り付けられてる状態のモデルです これをスクリプトを使って表示させてます
a
たくさんのテクスチャを一部に詰め込む的な感じですか?
f
大体はそんな感じです
https://minatocc.com/archives/2761 水音車両さんのMCT-N重スクリプト車のモデルでsign_○○のやつがあると思うんでそれを参考にするといいかもです MCT-N重スクリプト車の方向幕の表示方法は大体同じ方式で設定されてます
a
こちらも一度試してはみたんですけどもう一回チャレンジしてみます!
あっこれオブジェクトごと一箇所に詰めてるんですね!?
Copy code
var renderClass = "jp.ngt.rtm.render.VehiclePartsRenderer";
importPackage(Packages.org.lwjgl.opengl);
importPackage(Packages.jp.ngt.rtm.render);

// オブジェクト定義?
var r_type = [], r_dest = [], r_type2 = [], r_dest2 = [];

function init(par1, par2) {
    for (var i = 0; i < 10; i++) {
        r_type[i] = renderer.registerParts(new Parts("s_tA" + i));
        r_dest[i] = renderer.registerParts(new Parts("s_dA" + i));
        r_type2[i] = renderer.registerParts(new Parts("s_tB" + i));
        r_dest2[i] = renderer.registerParts(new Parts("s_dB" + i));
    }
}

function render_sign(st, isShine) {
    var st8 = Math.floor(st[8]);  // 種別
    var st9 = Math.floor(st[9]);  // 行先
    var cycle = 3;
    var time = renderer.getSystemTime() % (cycle * 2);

    if ((isShine && st[11] != 2) || (!isShine && st[11] == 2)) {
        if (time < cycle) {
            r_type[st8].render(renderer);
            r_dest[st9].render(renderer);
        } else {
            r_type2[st8].render(renderer);
            r_dest2[st9].render(renderer);
        }
    }
}

function render(entity, pass) {
    var st = entity.getTrainStateData();
    render_sign(st, false);
    render_sign(st, true);
}
すみません、これ水音様の**パック**のscript**パク**ってみたやつなんですけど、合ってますか?
自分がやったので多分違いそうな気がするのです。
t
35行目、` var st = entity.getTrainStateData();`でエラーを起こしそうな気がします
引数を渡す必要があるようです
a
ありがとうございます!!試してみます!
2 Views