dannbour_
01/04/2023, 7:34 PMPIPOsen
01/04/2023, 8:11 PMjavascript
entity.doorMoveR//0~40で右ドアの開き具合を取得
entity.doorMoveL//0~40で左ドアの開き具合を取得
0が閉、40が開でRTMのドアのスイッチを押してから2秒間数値が変化します。
RTMの初期スクリプトでは、これにrenderer.sigmoid(entity.doorMoveR/40);などといった処理をすることで単調な変化を0~1で表したものを、シグモイド変換しています(単調変化を以下のグラフのような変化に変換)PIPOsen
01/04/2023, 8:12 PMPIPOsen
01/04/2023, 8:13 PMdannbour_
01/04/2023, 8:13 PMPIPOsen
01/04/2023, 8:13 PMdannbour_
01/04/2023, 8:13 PMPIPOsen
01/04/2023, 8:16 PMjavascript
entity.getTrainState(4)
または
javascript
entity.getVehicleState(TrainState.TrainStateType.Door)
でドアの開閉を取得できます。これはスイッチが押された瞬間更新されます。
0 : 右閉 , 左閉
1 : 右開 , 左閉
2 : 右閉 , 左開
3 : 右開 , 左開PIPOsen
01/04/2023, 8:25 PMjavascript
var isDoorRopen = (entity.getTrainState(4) & 1) == 1;
var isDoorLopen = (entity.getTrainState(4) & 2) == 2;
1つの関数だったものが、isDoorRopenとisDoorLopenがそれぞれtrue/falseを返すように2つの関数になります。
例② :
javascript
//右ドアのスイッチを押した時
var doorState ^= 1;//0:両閉, 1:右開, 2:左開, 3:両開
//左ドアのスイッチを押した時
var doorState ^= 2;//0:両閉, 1:右開, 2:左開, 3:両開
スイッチというのはボタンを押すたびに0と1が繰り返されるもので、ifを使うと、0の時1と1の時0といった分岐を作らなければなりません。さらにこの変数は右ドアの開閉と左ドアの開閉が組み合わせられてるので、分岐はかなり膨らむでしょう。しかし、この様に簡単に値を変化させられます。(実用化するならこの後同期処理が必要ですが割愛)PIPOsen
01/04/2023, 8:28 PMdannbour_
01/04/2023, 8:30 PMPIPOsen
01/04/2023, 8:31 PMdannbour_
01/04/2023, 8:32 PMPIPOsen
01/04/2023, 8:45 PMjavascript
function render_doors(entity){
//ドア移動量をここでまとめておく(単位はm)
var doorMoveR = 0.0;
var doorMoveL = 0.0;
if(entity!=null){//null処理といって、RTMのモデルプレビュー時に発生するentity.~の取得エラーを回避する目的
doorMoveR = entity.doorMoveR / 60;//右ドアの0~60の開閉状態を0~1に変換
doorMoveL = entity.doorMoveL / 60;//左ドアの0~60の開閉状態を0~1に変換
}
var doorMoveR = renderer.sigmoid(doorMoveR);//これでシグモイド変換をし、実際のドアっぽい挙動になる
var doorMoveL = renderer.sigmoid(doorMoveL);
GL11.glPushMatrix();//移動する前の位置を保存
GL11.glTranslatef(0.0, 0.0, doorMoveR * amount);//ここで移動される
door_RF.render(renderer);//ここで描画される
GL11.glPopMatrix();//保存した位置に戻す
GL11.glPushMatrix();
GL11.glTranslatef(0.0, 0.0, doorMoveR * -amount);//ちなみにGL11.glTranslatef(Xの移動量, Yの移動量, Zの移動量)
door_RB.render(renderer);
GL11.glPopMatrix();//PushMatrixとPopMatrixの数合ってないとクラッシュはしないけど全ての描画が崩れるので注意
GL11.glPushMatrix();
GL11.glTranslatef(0.0, 0.0, doorMoveL * amount);
door_LF.render(renderer);
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslatef(0.0, 0.0, doorMoveL * -amount);
door_LB.render(renderer);
GL11.glPopMatrix();
}PIPOsen
01/04/2023, 8:46 PMdannbour_
01/04/2023, 8:59 PMPIPOsen
01/04/2023, 9:00 PMdannbour_
01/04/2023, 9:20 PMdannbour_
01/14/2023, 2:55 PMdannbour_
01/14/2023, 2:56 PMdannbour_
01/14/2023, 3:00 PMPIPOsen
01/14/2023, 3:01 PMdannbour_
01/14/2023, 3:02 PMPIPOsen
01/14/2023, 3:04 PMdannbour_
01/14/2023, 3:06 PMdannbour_
01/14/2023, 3:06 PMPIPOsen
01/14/2023, 3:09 PMPIPOsen
01/14/2023, 3:10 PMdannbour_
01/14/2023, 3:12 PMdannbour_
01/14/2023, 3:12 PMPIPOsen
01/14/2023, 3:14 PMPIPOsen
01/14/2023, 3:14 PMPIPOsen
01/14/2023, 3:15 PMPIPOsen
01/14/2023, 3:16 PMPIPOsen
01/14/2023, 3:16 PMdannbour_
01/14/2023, 3:19 PMdannbour_
01/14/2023, 3:19 PMdannbour_
01/14/2023, 3:19 PMPIPOsen
01/14/2023, 3:20 PMPIPOsen
01/14/2023, 3:20 PMPIPOsen
01/14/2023, 3:20 PMdannbour_
01/14/2023, 3:22 PMdannbour_
01/14/2023, 3:25 PMPIPOsen
01/14/2023, 3:26 PMdannbour_
01/14/2023, 3:32 PMPIPOsen
01/14/2023, 3:34 PMPIPOsen
01/14/2023, 3:35 PMdannbour_
01/14/2023, 3:37 PMdannbour_
01/14/2023, 3:38 PMdannbour_
01/14/2023, 3:38 PMPIPOsen
01/14/2023, 3:39 PMdannbour_
01/14/2023, 3:39 PMPIPOsen
01/14/2023, 3:40 PMdannbour_
01/14/2023, 3:41 PMdannbour_
01/14/2023, 3:52 PMPIPOsen
01/14/2023, 3:53 PMPIPOsen
01/14/2023, 3:53 PMdannbour_
01/14/2023, 4:22 PMPIPOsen
01/14/2023, 4:24 PMdannbour_
01/14/2023, 4:25 PMdannbour_
01/14/2023, 4:25 PMPIPOsen
01/14/2023, 4:25 PMPIPOsen
01/14/2023, 4:26 PMdannbour_
01/14/2023, 4:27 PMdannbour_
01/14/2023, 4:31 PMPIPOsen
01/14/2023, 4:31 PMdannbour_
01/14/2023, 4:32 PMdannbour_
01/14/2023, 4:48 PMdannbour_
01/14/2023, 4:49 PMPIPOsen
01/14/2023, 4:49 PMdannbour_
01/14/2023, 4:49 PMPIPOsen
01/14/2023, 4:50 PMPIPOsen
01/14/2023, 4:50 PMdannbour_
01/14/2023, 4:50 PMdannbour_
01/14/2023, 4:51 PMPIPOsen
01/14/2023, 4:51 PMPIPOsen
01/14/2023, 4:51 PMPIPOsen
01/14/2023, 4:52 PMdannbour_
01/14/2023, 4:53 PMdannbour_
01/14/2023, 4:59 PMdannbour_
01/14/2023, 4:59 PMPIPOsen
01/14/2023, 4:59 PMPIPOsen
01/14/2023, 5:00 PMPIPOsen
01/14/2023, 5:01 PMdannbour_
01/14/2023, 5:01 PMPIPOsen
01/14/2023, 5:01 PMPIPOsen
01/14/2023, 5:02 PMPIPOsen
01/14/2023, 5:02 PMdannbour_
01/14/2023, 5:03 PMdannbour_
01/14/2023, 5:03 PMdannbour_
01/14/2023, 5:03 PMPIPOsen
01/14/2023, 5:06 PMPIPOsen
01/15/2023, 3:05 AMPIPOsen
01/15/2023, 3:05 AMdannbour_
01/15/2023, 8:49 AMdannbour_
01/15/2023, 8:49 AMdannbour_
01/15/2023, 9:08 AMdannbour_
01/15/2023, 9:11 AMPIPOsen
01/15/2023, 9:36 AMdannbour_
01/15/2023, 9:47 AMPIPOsen
01/15/2023, 9:55 AMPIPOsen
01/15/2023, 9:55 AMdannbour_
01/15/2023, 10:02 AMPIPOsen
01/15/2023, 10:14 AMdannbour_
01/15/2023, 10:14 AMdannbour_
01/15/2023, 10:31 AMPIPOsen
01/15/2023, 10:34 AMPIPOsen
01/15/2023, 10:34 AMdannbour_
01/15/2023, 10:35 AMPIPOsen
01/15/2023, 10:35 AMPIPOsen
01/15/2023, 10:35 AMdannbour_
01/15/2023, 10:35 AMPIPOsen
01/15/2023, 10:35 AMdannbour_
01/15/2023, 10:36 AMPIPOsen
01/15/2023, 10:36 AMPIPOsen
01/15/2023, 10:37 AMdannbour_
01/15/2023, 1:35 PMPIPOsen
01/15/2023, 1:36 PMdannbour_
01/15/2023, 1:45 PMPIPOsen
01/15/2023, 1:45 PMdannbour_
01/15/2023, 1:47 PMPIPOsen
01/15/2023, 1:47 PMdannbour_
01/15/2023, 1:47 PMdannbour_
01/15/2023, 1:49 PMdannbour_
01/15/2023, 1:53 PMdannbour_
01/15/2023, 1:58 PMPIPOsen
01/15/2023, 2:02 PMdannbour_
01/15/2023, 2:03 PMdannbour_
01/15/2023, 2:30 PMPIPOsen
01/15/2023, 2:32 PMPIPOsen
01/15/2023, 2:33 PMdannbour_
01/15/2023, 2:33 PMPIPOsen
01/15/2023, 2:33 PMPIPOsen
01/15/2023, 2:33 PMPIPOsen
01/15/2023, 2:34 PMPIPOsen
01/15/2023, 2:34 PMPIPOsen
01/15/2023, 2:34 PMPIPOsen
01/15/2023, 2:37 PMdannbour_
01/15/2023, 3:37 PMdannbour_
01/15/2023, 3:38 PMPIPOsen
01/15/2023, 3:40 PMdannbour_
01/15/2023, 3:41 PMPIPOsen
01/15/2023, 3:46 PMPIPOsen
01/15/2023, 3:47 PMdannbour_
01/15/2023, 3:47 PMdannbour_
01/15/2023, 3:47 PMdannbour_
01/15/2023, 3:47 PMPIPOsen
01/15/2023, 3:47 PMdannbour_
01/15/2023, 3:47 PMPIPOsen
01/15/2023, 3:47 PMPIPOsen
01/15/2023, 3:48 PMdannbour_
01/15/2023, 3:49 PMPIPOsen
01/15/2023, 3:49 PMPIPOsen
01/15/2023, 3:50 PMdannbour_
01/15/2023, 3:51 PMPIPOsen
01/15/2023, 3:52 PMPIPOsen
01/15/2023, 3:52 PMdannbour_
01/15/2023, 3:55 PMdannbour_
01/15/2023, 4:38 PMdannbour_
01/15/2023, 4:38 PMPIPOsen
01/15/2023, 4:45 PMPIPOsen
01/15/2023, 4:46 PMdannbour_
01/15/2023, 4:46 PMPIPOsen
01/15/2023, 4:47 PMPIPOsen
01/15/2023, 4:48 PMdannbour_
01/15/2023, 6:23 PMdannbour_
01/15/2023, 6:26 PMdannbour_
01/16/2023, 10:07 AMPIPOsen
01/16/2023, 10:45 AMPIPOsen
01/16/2023, 10:46 AMdannbour_
01/16/2023, 1:46 PMdannbour_
01/16/2023, 1:46 PMdannbour_
01/16/2023, 1:47 PMdannbour_
01/16/2023, 1:47 PM