单位创建
在铁锈战争中,单位是游戏的核心元素。本章节将详细介绍如何创建自定义单位,包括单位的基本属性、图像设置、移动方式、攻击能力等。
单位基本结构
每个单位定义文件都包含多个部分,每个部分负责不同的功能:
[core] 核心属性
这是单位定义的基础部分,包含单位的基本属性:
[core]
name:单位名称
class:CustomUnitMetadata
price:建造价格
maxHp:最大生命值
mass:质量
techLevel:科技等级
buildSpeed:建造速度
radius:碰撞半径
displayRadius:显示半径
fogOfWarSightRange:视野范围
重要核心属性说明
| 属性 | 说明 | 示例 |
|---|---|---|
| name | 单位的名称,在游戏中显示 | name:基础坦克 |
| class | 单位类型,通常为CustomUnitMetadata | class:CustomUnitMetadata |
| price | 建造单位所需的资金 | price:1000 |
| maxHp | 单位的最大生命值 | maxHp:1000 |
| mass | 单位的质量,影响物理交互 | mass:10000 |
| techLevel | 科技等级,影响UI显示 | techLevel:1 |
| buildSpeed | 建造速度,数值越小建造越快 | buildSpeed:0.002 |
| radius | 单位的碰撞半径 | radius:20 |
| displayRadius | 单位的选择半径 | displayRadius:25 |
| fogOfWarSightRange | 单位的视野范围 | fogOfWarSightRange:15 |
[graphics] 图像设置
图像部分定义单位的外观:
[graphics]
image:units/tank_base.png
image_wreak:units/tank_wreak.png
image_turret:units/tank_turret.png
image_shadow:AUTO
teamColorsUseHue:true
teamColoringMode:hueAdd
重要图像属性说明
| 属性 | 说明 | 示例 |
|---|---|---|
| image | 单位主体图像 | image:units/tank_base.png |
| image_wreak | 单位死亡后的残骸图像 | image_wreak:units/tank_wreak.png |
| image_turret | 炮塔图像 | image_turret:units/tank_turret.png |
| image_shadow | 阴影图像,AUTO表示自动生成 | image_shadow:AUTO |
| teamColorsUseHue | 是否使用队伍颜色 | teamColorsUseHue:true |
| teamColoringMode | 队伍着色模式 | teamColoringMode:hueAdd |
[movement] 移动设置
移动部分定义单位的移动方式:
[movement]
movementType:LAND
moveSpeed:1.2
maxTurnSpeed:2
reverseSpeedPercentage:0.5
重要移动属性说明
| 属性 | 说明 | 可选值 |
|---|---|---|
| movementType | 移动类型 | LAND, WATER, AIR, HOVER, OVER_CLIFF, OVER_CLIFF_WATER |
| moveSpeed | 移动速度 | 数值,越大越快 |
| maxTurnSpeed | 最大转向速度 | 数值,越大转向越快 |
| reverseSpeedPercentage | 倒车速度比例 | 0-1之间的数值 |
[attack] 攻击设置
攻击部分定义单位的攻击能力:
[attack]
canAttack:true
canAttackFlyingUnits:false
canAttackLandUnits:true
canAttackUnderwaterUnits:false
isFixedFiring:false
重要攻击属性说明
| 属性 | 说明 | 示例 |
|---|---|---|
| canAttack | 是否可以攻击 | canAttack:true |
| canAttackFlyingUnits | 是否可以攻击空中单位 | canAttackFlyingUnits:false |
| canAttackLandUnits | 是否可以攻击地面单位 | canAttackLandUnits:true |
| canAttackUnderwaterUnits | 是否可以攻击水下单位 | canAttackUnderwaterUnits:false |
| isFixedFiring | 是否需要固定射击(如火炮) | isFixedFiring:false |
[turret_#] 炮塔设置
炮塔部分定义单位的武器系统:
[turret_1]
x:0
y:0
projectile:main_bullet
turnSpeed:2
size:10
barrelX:0
barrelY:15
重要炮塔属性说明
| 属性 | 说明 | 示例 |
|---|---|---|
| x, y | 炮塔在单位上的位置 | x:0, y:0 |
| projectile | 使用的抛射体 | projectile:main_bullet |
| turnSpeed | 炮塔旋转速度 | turnSpeed:2 |
| size | 炮塔大小 | size:10 |
| barrelX, barrelY | 炮管出口位置 | barrelX:0, barrelY:15 |
[projectile_#] 抛射体设置
抛射体部分定义单位发射的武器:
[projectile_1]
directDamage:50
life:60
speed:10
image:projectiles/bullet.png
drawType:1
color:#FF0000
重要抛射体属性说明
| 属性 | 说明 | 示例 |
|---|---|---|
| directDamage | 直接伤害值 | directDamage:50 |
| life | 存在时间(帧) | life:60 |
| speed | 移动速度 | speed:10 |
| image | 抛射体图像 | image:projectiles/bullet.png |
| drawType | 绘制类型 | drawType:1 |
| color | 颜色 | color:#FF0000 |
完整单位示例
以下是一个完整的单位定义示例:
[core]
name:重型坦克
class:CustomUnitMetadata
price:2000
maxHp:2000
mass:20000
techLevel:2
buildSpeed:0.003
radius:25
displayRadius:30
fogOfWarSightRange:18
armour:3
[graphics]
image:units/heavy_tank_base.png
image_wreak:units/heavy_tank_wreak.png
image_turret:units/heavy_tank_turret.png
image_shadow:AUTO
teamColorsUseHue:true
teamColoringMode:hueAdd
[movement]
movementType:LAND
moveSpeed:0.8
maxTurnSpeed:1.5
reverseSpeedPercentage:0.3
[attack]
canAttack:true
canAttackFlyingUnits:false
canAttackLandUnits:true
canAttackUnderwaterUnits:false
isFixedFiring:false
[turret_1]
x:0
y:0
projectile:heavy_bullet
turnSpeed:1.5
size:15
barrelX:0
barrelY:20
[projectile_1]
directDamage:100
life:80
speed:8
image:projectiles/heavy_bullet.png
drawType:1
color:#FF0000
高级单位属性
除了基本属性外,单位还可以设置许多高级属性:
资源相关
[core]
generation_resources:credits:5
generation_delay:40
AI相关
[ai]
useAsBuilder:true
useAsAttacker:true
buildPriority:0.6
特殊效果
[graphics]
dustEffect:true
splastEffect:true
注意事项
- 确保所有必需的图像文件都存在且路径正确
- 合理设置单位属性,避免数值过高或过低
- 测试单位在不同地形上的表现
- 平衡单位的攻防能力,确保游戏平衡性