Featured image of post 砲台自動瞄準

砲台自動瞄準

砲台自動瞄準

用處理器可以控制砲台們打的方向和什麼時候打,這樣只要有一群受控的砲台,就可以在射程範圍內指哪打哪

單一砲台

one turret screenshot

如圖所示,砲台跟著玩家瞄準的方向打
以下是程式碼

1
2
3
4
5
radar player any any distance duo1 1 player
sensor x player @shootX
sensor y player @shootY
sensor shoot player @shooting
control shoot duo1 x y shoot 0
commanddescription
radar取得玩家物件
sensor抽出玩家物件的 shootXshootY(瞄準的點)和 shooting(是否正在開火)
control控制 duo1 砲台
variabledescription
player玩家物件
x瞄準的 X 座標
y瞄準的 Y 座標
shooting是否開火

one turret code

多個砲台

上面的指令只能控制一個砲台,那麼要怎麼控制多個砲台呢?答案是 loop,但是 Mindustry 沒有提供 loop,我們只能用 jump,那麼就來看看程式吧!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
set n 0
getlink result n
radar player any any distance result 1 player
sensor x player @shootX
sensor y player @shootY
sensor shoot player @shooting
control shoot result x y shoot 0
op add n n 1
op mod n n @links
jump 1 always x false

以下重複的就不會再多講了

commanddescription
set初始化一個變數 n 值為 0
getlink取得連結的第 n 個建築,存到 result
op執行數學運算,舉例 add n N 1 => n = N + 1
jump根據規則跳躍到某條指令,這裡的 1 是指跳到第一調指令(從 0 開始數,也就是跳到 radar),因為我們調建設成 always,因此後面兩個就不必要,你在編輯畫面應該也看不到
variabledescription
n迭代的變數
@links總共有幾個連結的建築

multiple turrets screenshot
multipleTurretsCode

參考資料

https://www.youtube.com/watch?v=UFK5m6qKT6U
https://www.youtube.com/watch?v=YMxU0jcS11I

好想養貓阿~~
使用 Hugo 建立
主題 StackJimmy 設計