Besiege

Besiege

Not enough ratings
【中文指南】關卡編輯器: 物件「歸元」概論
By Nice Name
本指南將教你如何在關卡編輯器裡讓一或多個物件繞著特定座標旋轉,已達成所謂「歸元」。(就像行星公轉母星一樣)

*「歸元」一詞來自於我與 JJ喵 的討論,因為基本上我的命名能力為負值所以就沿用了他的「歸元」一詞。

本指南所使用的用詞參考了CCCAnvil共同翻譯的《圍城》台灣繁體中文語言套件
   
Award
Favorite
Favorited
Unfavorite
簡介
首先,當你要使一物件圍繞一軸旋轉時我們會面臨兩種情況:

一、該物件單純的位於軸附近,
其角度均為零,或其中一面對準軸心

這物件在右圖是以方塊為例,我稱它為「物件A」。


二、該物件位於軸之附近,但角度有被調整過

這物件在右圖是以方塊為例,我稱它為「物件B」。
邏輯事件與說明
一般來說,要使一物件圍繞一軸旋轉時會有三個步驟:

1. 將物件移至軸心。
2. 旋轉物件。
3. 根據移至軸心時的相反距離把物件移回公轉的軌道上。


以物件A為例,物件A距軸心10尺,而我希望它能每次旋轉1度,所以指令應長這樣:

當 關卡開始
 座標變換(區域) "x= 10"
  座標變換(全域) "y=1°"
 座標變換(區域) "x= -10"
 重複 "無限次"

在第三條指令顯示了移動距離為 -10尺,如同上文所述此值為物件移動至軸時的「相反距離」。

簡單吧!咦...沒有嗎?

那麼對於物件B,雖然移動條件與物件A相同,但由於物件B的已知角度(在範例中物件B的角度為-45度)而使我們無法使用與物件A相同之邏輯閘來讓物件B繞軸旋轉,所以相較於物件A之邏輯閘,我們會給物件B五個步驟來歸元。

1. 選轉至其中一面對準軸心,使我們較容易計算距離。(新的)
2. 將物件移至軸心。
3. 旋轉物件。
4. 根據移至軸心時的相反距離把物件移回公轉的軌道上。
5. 根據移至軸心時的相反角度把物件移回原本的角度。(新的)


O當 關卡開始
 座標變換(區域) "y= 45" (新的)
  座標變換(區域) "x= 10
   座標變換(全域) "y=1°"
  座標變換(區域) "x= -10
 座標變換(區域)y= -45" (新的)
 重複 "無限次"

請注意上文的兩個例子都使用了 「區域」的移動方式,如果不小心寫成了「全域」,那麼整個歸元系統或將失敗。
實例
Orbit Transformation Sample
這是本文的實體例子,可以下載來研究研究。(影片示範)

我至今(2019/03/27)所有用過歸元系統的地圖 (由新到舊)
Combine - Infinite Catapult
Combine
♥♥♥♥ You Machines
Nice Name's Minigun
War of Besiege
SetGet of Arm
SetGet of 2D Angle Position Tracker
Nice Name's Level
Atomic Cannon
AI 8 - Doom
.
.
.
(由於例子過多而在此省略)

4 Comments
YUKO609 4 Apr, 2023 @ 12:27am 
好家伙看了三年终于看懂了
FeiFa 7 Mar, 2020 @ 10:21pm 
不错不错
ZZM 5 Mar, 2020 @ 7:19pm 
太硬核了......
DirectX_13 1 Mar, 2020 @ 3:22am 
Nice