跳轉到內容

Celestia/指令碼位置

來自華夏公益教科書,開放世界開放書籍

駕駛你的宇宙飛船,夥計?

[編輯 | 編輯原始碼]

Celestia v1.5.0(及更高版本)的 SSC 檔案中提供的指令碼方法的一個不太明顯的含義是,現在可以在Celestia 執行時以任意座標和方向重新定位物件。

換句話說,你可以將星際宇宙飛船飛到太陽系中的任何地方。

ScriptedOrbit 函式的返回值是物件座標系中的 x、y、z。

任何 x、y、z。

類似地,ScriptedRotation 可以返回任何四元數的成分。

如果你在物件的SSC 檔案中為其指定了適當的軌道和物體參考系,你可以最小化ScriptedOrbitScriptedRotation 中要使用的演算法的複雜性。

不幸的是,ScriptedOrbitScriptedRotation 尚未在STC 檔案 中提供。因此,你只能在距離恆星或重心 1 光年的範圍內定義可移動物件,因為 Celestia 僅在視點距離父恆星 1 光年範圍內時才會繪製 SSC 物件。

與使用者溝通

[編輯 | 編輯原始碼]

你仍然需要一種方法讓使用者與ScriptedOrbit 通訊,以告訴它生成新的 x、y、z。

ScriptedOrbitScriptedRotation 模組無法直接與鍵盤、滑鼠或操縱桿互動,也無法與 CELX 指令碼互動,但它們可以透過呼叫 celestia:getselection() 來檢測當前所選物件的名稱。

一種解決方案是定義具有唯一名稱的物件,這些物件可以由使用者或指令碼選擇。一種可能性是為此定義DSC OpenCluster 物件。

時間異常

[編輯 | 編輯原始碼]

在你使用的定位演算法中,你應該考慮到使用者可以將當前時間設定為任意值。“應該”是關鍵詞。如果你的演算法在時間倒流時無法正常工作,這真的沒什麼大不了的:只需確保記錄該限制即可。

華夏公益教科書