https://linen.dev logo
種別幕と方向幕を分けたい
# forum
k
種別幕を行き先、方向幕を車内放送に割り当てる方法を知っている方はいらっしゃいますか?
p
行き先表示をスクリプトで行いたいということでしょうか
k
そういうことです。
p
現在、車両の描画はスクリプトで行えてますか? 大前提として、描画スクリプトを利用する際にはRTM側で用意された、描画、ドア開閉、パンタグラフ動作、発光系などの一通りの動作をスクリプトとして自分で書く必要があります。
これらをまとめたパックなどもありますので、そちらをベースに開発環境を整えることもできます。 そこから、行き先表示を出すためのスクリプトを書いていきます。
k
他の方が制作されている改造可能の車両を使用していて、スプリクトは描いてある状態です。
p
entity.getTrainStateData(8)が行き先の値です。jsonで種別幕として機能させたいテキストを書いてください。帰り値はそのテキストがjsonで記述した行き先のリストの何番目か(0スタート)です。 続いてentity.getTrainStateData(9)が車内放送の値です。仕様は上と同様です。
モデル作成時に想定されうるすべての種別幕と方向幕のモデルを作成してください。(json含めテクスチャ込みで)init関数内でそれらのオブジェクトをrenderPartsに登録します。 最後に読み取った値に応じで登録したオブジェクト描画すればスクリプトで行き先表示を行うことができます。 数値を扱う便宜上、それぞれのオブジェクトの名前にも数字を振るとやりやすいでしょう。
片方の行き先表示の部分は、json内の既存の方向幕の機能を使うこともできます。 使わない場合はjsonの行き先一覧の部分以外は不要になりますが、使用上何かしら書かないといけないので消さないようにしてください(テクスチャや座標の部分)。その際座標の値をすべて0にしておかないと予期しない面描画が発生してしまいます。
k
元が行き先だけで幕を動かす形のせいなのかはわかりませんが、entity.getTrainStateData(8)が見当たりません
p
見当たらないというのは?
k
ごめんなさい自分がよくわかってなかったのですが、entity.getTrainStateData(8)を自分で書いていくということですか?
p
はい
k
わかりました、無知で申し訳ないです💦
初めてスプリクトを書くのでこのスプリクトの書き方を教えて頂ければ嬉しいです。
p
まず簡単な描画の方法は分かりますか? モデル作成時にオブジェクトを追加して、スクリプト内でrenderPartsに登録して、renderします。
これができないなら厳しい
改造可能パックのスクリプト?を見て、この部分ができる/理解できるならあとは簡単なんですが;
k
一応過去にヘッドマークを追加した経験はありますが、、
p
上に記載した通りモデルに種別幕と行先幕の正しいオブジェクトを追加しないと機能しません。多分落ちます。
Copy code
javascript
function init(par1, par2){
  ...
  type = [];
  for (i = 0; i < 10; i++){ //i < 種別幕(json方向幕)の数
    type[i] = renderer.registerParts(new Parts("type_"+i));
  }
  dest = [];
  for (i = 0; i < 10; i++){ //i < 行先幕(json車内放送)の数
    dest[i] = renderer.registerParts(new Parts("dest_"+i));
  }
};

function render(entity, pass, par3){
  ...
  type[entity ? entity.getTrainStateData(8) : 0].render(renderer);
  dest[entity ? entity.getTrainStateData(9) : 0].render(renderer);
}
ちなみに種別幕(json方向幕)の数や行先幕(json車内放送)の数ですが、1.7.10なら`entity.getModelSet().getConfig().rollsignNames.length`・`entity.getModelSet().getConfig().sound_Announcement.length`、1.12.2なら`entity.getResourceState().getResourceSet().getConfig().rollsignNames.length`・`entity.getResourceState().getResourceSet().getConfig().sound_Announcement.length`で取得できます。
k
こんな感じに書きましたが種別幕、行き先幕の数字は写真のように数字を打ち込むだけでよろしいでしょうか?
p
いいえそこはコメントアウトされてる場所なので違います。 i < 10となっている部分です
k
わかりました修正します。
連絡遅れました、これでよろしいでしょうか?まだまだ初心者なのでまた間違っていたら申し訳ないです。
p
function initやrenderはすでにスクリプト中に存在しているはずです そこに付け足すという意図で…と書いています
k
貼り付けました、これであってますか?
上に書いてあるfunction initやfunction render は書かない方がいいですか?
p
あってないですね
さっきと状況が変わってないように思えます
付け足す、ので既存のfunctionの中に入れてください
k
わかりました、ありがとうございます!
どうでしょうか ?
p
そうですけどコーディングがずれてます
メモではなく専用のソフトを使った方がいいです
k
わかりました、どのようなソフトを使えばよいでしょうか?
p
私は visual studio codeを使ってます 詳しくはご自身で調べてください
k
わかりました、ありがとうございます
p
具体的には、右側の方、}の数が不正だと思います
k
不正とはなんでしょうか?
p
コーディングがずれているということです
k
ごめんなさいコーティングとは何でしょうか?
p
コーディングはコードを打つことです
k
ありがとうございます、無知で申し訳ないです💦
p
}の数がおかしいので、チェックしてください
k
わかりました
p
メモにはそういう機能はないですが、対応したエディタなら教えてくれます
ここミスると起動しなくなるので気をつけてください
jsonでもそういうことありますよね?
k
そうですね、過去に少し打ち間違えただけで起動しなくなる事がありました
visual studio codeをインストールしてみたのですが、日本語が?になっていますが問題はありますか?
p
ないですが、UTF-8をANSI(shift-JIS)にすれば治ります
k
どうでしょうか?
間違っていますか?
p
あとはご自身で動作確認お願いします
k
わかりました
何度も申し訳ありません。起動したら落ちてしまいました。
jsonファイルです
こちらがスプリクトです
本当に何度も申し訳ないのですが、間違っている部分があれば教えていただけると幸いです。
p
すみませんが、ヌルポとのことで、こちらの手には負えません。
ただ、rendering screenとあるのでそこら辺のエラーかと思われますが、私にはわかりません。
k
わかりました、ありがとうございます。
p
一応クラッシュレポートの全文見せてください
k
わかりました、少々お待ちください
クラッシュレポートです
なぜ落ちたかわかりましたか?
p
分からないです
k
わかりました