剛才終於整好左有加速,唔再係 constant velocity。
度門用左呢條式來令佢郁:
6.png
個 curve 就可以令剛開始郁時郁得慢 d,開到中段時就郁返快返,就來郁完時又郁得慢 d。
以下就係果段 code:(列車前進方向右邊的車門、月台望向列車時左半邊的幕門)
- 代碼: 選擇全部
[Object]
Position = 0, 0, 0
States = psd-L.csv
TranslateZFunction = If[abs[trackdistance] < 10, -0.5 * (Sin[rightdoors * 3.1415926535898 + 4.7123889803847] + 1), 0]
將果段 Function 轉做近似 pseudo code 的野
- 代碼: 選擇全部
if (列車同個幕門的距離係 ±10 米) {
將 rightdoors 代入果條式
} else {
不要郁動
}
個 if condition 係要 check 下架車係咪響個站的範圍。因為陣間條式個 variable 係用返畀你做 exterior train object 車門果個變量。如果唔 check 的到,到時你架車響第道開門的話咁全條線的幕門都會同時開門。個 10m 距離只係求其打上去,到時真係整果時要微調一下。
條式
-0.5 * (Sin[rightdoors * 3.1415926535898 + 4.7123889803847] + 1) 開頭的負號係因為要向左邊郁,如果係整右半邊的門就 del 左個負號。
而「rightdoors * 3.1415926535898」就係「2 * rightdoors * 90°」。要乘 90° 的原因係因為
rightdoors 所 return 的數係介乎 0 到 1,咁我地只係要個 curve 的頭 90° 的部分。所以最大的數(即係 1)轉做 90° 以乎合返個 curve 的情況。
留意條式只係可以令個門郁到 1m。如果想改做其他距離,好簡單,加返句
TranslateZDirection = 0, 0, 1.1,1.1 係代表你想將度門郁到有幾遠。