MDT模組單位武器制作

單位,一共有三類,他們分別是制作單位的工廠、重構(gòu)工廠和單位本身
單位本身我只講官方分類的各一種機(jī)甲(全部真的太多了),基本可以囊括所有屬性,如果你有其他想知道的可以留言
單位工廠
地面單位工廠 -> UnitFactory/單位工廠

解釋
plans.unit: 生產(chǎn)的單位
plans.time: 生產(chǎn)時間
plans.requirements: 生產(chǎn)所消耗的物資

重構(gòu)工廠
tankAssembler/坦克裝配廠 -> UnitAssembler/裝配工廠
下面的json代碼plans字段為猜測未來寫法,anuke沒寫PayloadStack的轉(zhuǎn)換,當(dāng)前實(shí)現(xiàn)不了
以下在v137版本是會報錯的,猜的是未來可能的寫法
解釋
droneType: 用來裝載的單位
dronesCreated: 裝載單位數(shù)量
droneConstructTime: 裝載單位被制造耗時
areaSize: 建造區(qū)域邊長

倍乘級單位重構(gòu)工廠 ->?Reconstructor/重構(gòu)工廠
解釋
constructTime: 升級時間
upgrades.*.0: 升級前機(jī)甲
upgrades.*.1: 升級后機(jī)甲

單位
alpha/主角小飛機(jī)?-> flying(飛行單位)

解釋
type: 單位種類(JsonMod有區(qū)分,在游戲區(qū)分不多,且也沒有拓展字段。不填默認(rèn) flying)
defaultController: 單位默認(rèn)控制者(見后)
isEnemy:是否被計數(shù)器記作敵人(一般輔助單位為 true)
lowAltitude: 低空飛行,對單位的圖層和影子變化
flying: 是否能飛行
mineSpeed: 挖礦速度
mineTier: 大于物品 hardness 可挖掘
buildSpeed: 建筑速度
drag: 慣性
speed: 移動速度
accel: 加速度
itemCapacity: 物品容量
rotateSpeed: 單位轉(zhuǎn)速
health: 生命值
engineOffset: 引擎偏移量(-y)
hitSize: 碰撞箱大小
alwaysUnlocked: 是否永久解鎖
weapons: 武器(無需單獨(dú)開一期,基本只能給單位用。下文w代替weapons里的weapon)
w.type: 武器類型(不填默認(rèn)?Weapon)
w.name: 使用的貼圖
w.reload: 裝填時間
w.x, w.y: 武器在機(jī)甲上所在位置(以機(jī)甲中心為平面直角坐標(biāo)系原點(diǎn))
w.top: 武器是否永遠(yuǎn)在其他 單位及其子圖層 之上
w.bullet: 使用的子彈


reign/王座?-> mech(機(jī)械單位)

解釋
armor: 單位護(hù)甲值
mechStepParticles: 走路是否有粒子效果
stepShake: 走路屏幕搖晃強(qiáng)度
drownTimeMultiplier: 淹死時間倍率
mechFrontSway: 單位行走垂直搖晃
mechSideSway: 單位行走水平搖晃
ammoType: 所使用的子彈(如果開了 單位有彈藥限制)
w.recoil: 武器后坐力特效
w.shake: 使用武器屏幕搖晃強(qiáng)度
w.shootSound: 使用武器聲音
w.shootX, w.shootY: 子彈射擊偏移(以武器中心為平面直角坐標(biāo)系原點(diǎn))

arkyid/毒蠱?-> legs(腿型單位)

解釋
hovering: 是否懸浮,也會改變單位尋路方式(即尋路代價算法)
groundLayer: 圖層,詳見1565619256.github.io/Mindustry-zh_CN-modding-guide/constant.html(比較多,故不放在專欄內(nèi))
貓貓沒有寫圖層數(shù)值轉(zhuǎn)換器,所以只能寫數(shù)字
allowLegStep: 如果是腿型單位且這個值為 true ,這個單位就可以跨過大多數(shù)建筑物
legCount: 腿的數(shù)量
legMoveSpace: 腳落腳距離倍率(一直走動情況下)
legPairOffset: 各腿移動時間間隔(或者不同步程度)
legLength: 腿長
legExtension: 小腿縱向坐標(biāo)偏移量(一般用于無關(guān)節(jié)單位,合適的值只能試出來)
legBaseOffset: 大腿離單位中心距離
legLengthScl: 每次移動腳嘗試向單位中心遠(yuǎn)離倍率(不能理解為腿長短縮放)
legSpeed: 腿移動速度
rippleScale: 落腳后腳底特效夸張程度(不知道怎么解釋或者詞窮想不出什么詞)
legSplashRange: 腳落地濺射范圍
legSplashDamage: 腳落地濺射傷害

retusa/潛螺 -> naval(海軍)

解釋
targetAir, targetGround: 是否瞄準(zhǔn)空軍, 陸軍
faceTarget: 是否面向(瞄準(zhǔn)/射擊的)目標(biāo)
trailLength: 尾拖長度(波浪尾拖)
waveTrailX, waveTrailY: 尾拖偏移
trailScale: 尾拖粗細(xì)
w.mirror: 是否鏡像武器(以單位中心向上軸為對稱軸作軸對稱圖形)
w.shoot: 射擊形式(若不寫type默認(rèn)為 ShootPattern,挖坑+1)


oct/要塞 -> payload(荷載單位)

解釋
engineSize: 引擎大小
payloadCapacity: 荷載容量(tilePayload一般取64)
drawShield: 是否繪制護(hù)盾(一個小圈)
buildBeamOffset: 建造槍偏移(y)
abilities: 單位能力


stell/鐵蹄?-> Tank(坦克)

解釋
squareShape: 是否為方形影子
omniMovement: 是否能全方位移動(若為 false 單位只可朝他面朝的方向移動)
rotateMoveFirst: 是否旋轉(zhuǎn)在先
w.heatColor: 武器過熱顏色
w.cooldownTime: 武器過熱冷卻時間

elude/掙脫 -> hover(懸浮單位)

解釋
useEngineElevation: 始終顯示引擎正常尺寸,不受高度影響
parts: 單位額外繪制部件
w.shootCone: 射擊角判定(瞄準(zhǔn)允許偏差角度,采用角度制)
w.baseRotation: 武器基礎(chǔ)旋轉(zhuǎn)角度

assemblyDrone/裝配無人機(jī) -> tether(打工單位)

解釋
targetable: 若為 true,單位不會被任何東西瞄準(zhǔn)
hidden: 是否隱藏(核心數(shù)據(jù)庫,荷載路由器配置界面...)
useUnitCap: 無單位數(shù)量限制
logicControllable:邏輯可控性
playerControllable: 玩家可控性
allowedInPayloads: 是否能作為荷載被運(yùn)輸
createWreck: 是否顯示死亡印記

latum/爆漿大蟲子 -> crawl(蠕動單位)
實(shí)驗(yàn)性(v137)單位,屬性肯定不全,請仔細(xì)考慮是否使用這種單位

解釋
segments: 身體分節(jié)數(shù)
segmentScl,?segmentPhase, segmentMag: 不知道
float trns = Mathf.sin(crawl.crawlTime() + i * segmentPhase, segmentScl, segmentMag)
immunities: 免疫效果
drawCell: 是否繪制隊伍指示器
drawBody: 是否繪制單位身體
segmentRotSpeed: 分節(jié)轉(zhuǎn)速
segmentMaxRot: 各個分節(jié)最大差異角度
crushDamage: 在 坦克/蠕動?單位下方每幀受到的傷害(?
healFlash: 被治療是否顯示顏色
healColor: 被治療顯示顏色

至于為什么不寫 SpawnDeathAbility,請看如下片段自行理解


分類部分
單位工廠
plans.unit: UnitType
plans.time: float
plans.requirements: ItemStack[]

重構(gòu)工廠
constructTime: float
upgrades: UnitTypes[]

裝配工廠
droneType: UnitType
dronesCreated: int
droneConstructTime: float
areaSize: int

單位
aiController: Prov<? extends UnitController>
weapons: Seq<Weapon>
isEnemy:boolean
lowAltitude: boolean
flying: boolean
mineSpeed: float
mineTier: int
buildSpeed: float
speed: float
accel: int
itemCapacity: int
rotateSpeed: speed
health: float
engineOffset: float
hitSize: int
armor: float
mechStepParticles: boolean
stepShake: float
drownTimeMultiplier: float
mechFrontSway: float
mechSideSway: float
ammoType: AmmoType
hovering: boolean
groundLayer: float
allowLegStep: boolean
legCount: int
legMoveSpace: float
legPairOffset: float
legLength: float
legExtension: float
legBaseOffset: float
legLengthScl: float
legSpeed: float
rippleScale: float
legSplashRange: float
legSplashDamage: float
targetAir, targetGround: boolean
faceTarget: boolean
trailLength: int
waveTrailX, waveTrailY: float
trailScale: float
engineSize: float
payloadCapacity: float
drawShield: boolean
buildBeamOffset: float
abilities: Seq<Ability>
squareShape: boolean
omniMovement: boolean
rotateMoveFirst: boolean
useEngineElevation: boolean
parts: Seq<DrawPart>
targetable: boolean
hidden: boolean
useUnitCap: boolean
logicControllable: boolean
playerControllable: boolean
allowedInPayloads: boolean
createWreck: boolean
segments: int
segmentScl,?segmentPhase, segmentMag: float
immunities: ObjectSet<StatusEffect>
drawCell: boolean
drawBody: boolean
segmentRotSpeed: float
segmentMaxRot: float
crushDamage: float
healFlash: boolean
healColor: Color

武器
name:?String
reload: float
x, y: float
top: boolean
bullet: BulletType
recoil: float
shake: float
shootSound: Sound
shootX, shootY: float
mirror: boolean
shoot: ShootPattern
heatColor: Color
cooldownTime: float
shootCone: float
baseRotation: float

其他
AI
AssemblerAI: 裝配AI(裝配無人機(jī))
BuilderAI: 建造AI(T2空輔)
CargoAI: 搬運(yùn)AI(貨運(yùn)無人機(jī))
DefenderAI: 保護(hù)單位AI(那只兲)
FlyingAI: 空軍AI(日蝕)
FlyingFollowAI: 飛行跟隨AI?(悲愴)
GroundAI: 陸軍AI(尖刀)
HugAI: 親親AI?(上面的大蟲子)
LogicAI: 被邏輯控制AI
MinnerAI: 礦工AI(獨(dú)影/德魯格)
RepairAI: 修復(fù)AI(巨象)
SuicideAI: 自殺AI(T1爬爬)

后言
本期把武器和單位雜在一起,故字?jǐn)?shù)會很多,請細(xì)心觀看我寫一下卡一下挺難受的?,F(xiàn)在最主要的模組內(nèi)容更新完了(如果你有看我以前的文章),接著就是去完善文集內(nèi)容?,F(xiàn)在學(xué)了一些jsMod,到時候也可能繼續(xù)更新jsMod的教程。順便,`DeveloperMode`這個模組幫了我很多忙雖然137我基本沒用過了,讓我省去了很多退出重進(jìn)的時間。Anuken更新的真快, 一個學(xué)期更了6個版本我也不知道為什么有人一直在看另一個文集的內(nèi)容,我之前都不知道我在寫什么東西,之前寫教程很大程度上是為了蹭熱度,就翻譯wiki的內(nèi)容誰不會啊,現(xiàn)在想想還是挺尷尬的。這個教程也必定會過時,畢竟專欄只能改3次。
8月13日更新版
[M] 更詳細(xì)的內(nèi)容(?
[+] 更多廢話(?