武器定义 (<WeaponDef>)
功能说明
武器定义用于描述游戏中的各种武器的特性,包括其攻击方式、属性、外观等。武器定义继承了物品定义 (<ItemDef>) 的所有基本特性,因此也拥有物品的通用属性,如堆叠数量、稀有度等。
可用参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
defName | 字符串 | 无 | 必需。该武器定义的唯一标识符。 |
label | 字符串 | (空) | 可选。该武器在游戏中显示的名称。 |
description | 字符串 | (空) | 可选。该武器在游戏中的详细描述。 |
FPS | 浮点数 | 3 | 定义武器显示动画的帧率。 |
textures | 字符串数组 | (空) | 引用多个 <ImageDef> 的 defName,用于定义武器在世界或UI中的外观纹理。 |
rarity | 字符串 | Common | 定义武器的稀有度。详见下文**rarity 字段**。 |
maxStack | 整数 | 10 | 定义该武器的最大堆叠数量。 |
ssEquippable | 布尔值 | false | 定义该武器是否可被实体装备。 |
type | 字符串 | Melee | 定义武器的攻击类型,可以是“近战”或“远程”。详见下文**type 字段**。 |
attributes | 定义 | (匿名定义默认值) | 定义武器具体的战斗属性,如攻击力、防御力、攻击速度等。可以是引用或匿名定义。详见下文**attributes 字段**。 |
bullet | 定义 | 无 | 仅当 type 为 Ranged 时有效。定义远程武器发射的子弹特性。可以是引用或匿名定义。详见下文**bullet 字段**。 |
attackAnimation | 字符串数组 | (空) | 引用多个动画帧名的字符串数组,用于定义武器攻击时播放的专属动画序列。详见下文**attackAnimation 字段**。 |
attackDetectionTime | 浮点数 | 0 | 攻击判定时间点,表示攻击动画播放到该百分比时触发伤害或投射子弹。取值范围0到1。 |
useEntityAttackAnimation | 布尔值 | true | 是否使用实体自身的攻击动画,如果为 false 则使用武器自带的 attackAnimation。 |
示例
这是一个定义名为“TestGun”的远程武器的例子:
<Define>
<!-- 子弹定义,会被WeaponDef中bullet引用 -->
<BulletDef>
<defName>yellowBullet</defName>
<label>黄色子弹</label>
<description>一颗黄色的子弹</description>
<!-- 嵌套定义属性 -->
<attributes>
<health>1</health>
<moveSpeed>20</moveSpeed>
</attributes>
<!-- 嵌套定义纹理绘制顺序 -->
<drawingOrder>
<idle_down>
<textures>
<li>yellowBullet</li>
</textures>
</idle_down>
<walk_down>
<textures>
<li>yellowBullet</li>
</textures>
</walk_down>
</drawingOrder>
</BulletDef>
<!-- 属性定义,会被WeaponDef中attributes引用 -->
<AttributesDef>
<defName>TestGunAttributes</defName>
<attack>10</attack>
<defense>3</defense>
<attackSpeed>1</attackSpeed>
<attackRange>10</attackRange>
<attackTargetCount>1</attackTargetCount>
</AttributesDef>
<!-- 武器定义 -->
<WeaponDef>
<defName>TestGun</defName>
<label>测试枪</label>
<description>一把测试用的枪</description>
<!-- 引用属性定义 -->
<attributes>TestGunAttributes</attributes>
<type>Ranged</type>
<FPS>10</FPS>
<textures>
<li>TestGunItem</li>
</textures>
<attackAnimation>
<li>testGunAttackAnimation_0</li>
<li>testGunAttackAnimation_1</li>
<li>testGunAttackAnimation_2</li>
<li>testGunAttackAnimation_3</li>
<li>testGunAttackAnimation_4</li>
<li>testGunAttackAnimation_5</li>
<li>testGunAttackAnimation_6</li>
<li>testGunAttackAnimation_7</li>
<li>testGunAttackAnimation_8</li>
<li>testGunAttackAnimation_9</li>
</attackAnimation>
<attackDetectionTime>0.5</attackDetectionTime>
<maxStack>1</maxStack>
<rarity>Uncommon</rarity>
<bullet>yellowBullet</bullet> <!-- 引用子弹定义 -->
</WeaponDef>
</Define>
复杂参数说明
type 字段
- 说明:指定武器的攻击类型。
- 可选值:
Melee(近战武器)Ranged(远程武器)
- 示例:
<type>Ranged</type>
rarity 字段
- 说明:指定该物品的稀有度。
- 可选值:
Common(普通)Uncommon(不常见)Rare(稀有)Epic(史诗)Legendary(传说)
- 示例:
<rarity>Uncommon</rarity>
textures 字段 (图片定义引用数组)
- 说明:用于指定武器在界面或游戏世界中显示的纹理。这是一个字符串数组,每个元素引用一个
<ImageDef>的defName。 - 引用方式:
<textures> <li>ImageDef的defName1</li> <li>ImageDef的defName2</li> <!-- ...更多纹理引用 --> </textures> - 示例:
<textures> <li>TestGunItem</li> </textures>
attackAnimation 字段 (动画帧引用数组)
- 说明:用于指定武器攻击时播放的动画帧序列。这是一个字符串数组,每个元素引用一个
<ImageDef>定义的动画帧。通常,一个动画纹理会在其defName后拼接_0,_1,_2等来表示具体的帧。 - 引用方式:
<attackAnimation> <li>ImageDef动画帧名1</li> <li>ImageDef动画帧名2</li> <!-- ...更多动画帧引用 --> </attackAnimation> - 示例:
<attackAnimation> <li>testGunAttackAnimation_0</li> <li>testGunAttackAnimation_1</li> <!-- ... --> <li>testGunAttackAnimation_9</li> </attackAnimation>
attributes 字段 (武器属性定义)
- 说明:定义武器具体的战斗属性,如生命值、移动速度、攻击力、防御力、攻击速度、攻击范围和攻击目标数量。可以是一个对预定义的
<AttributesDef>的defName引用,也可以是当前位置的匿名定义。 - 引用方式:
<attributes>AttributesDef的defName</attributes> - 匿名定义方式:
<attributes> <health>10</health> <moveSpeed>1</moveSpeed> <attack>1</attack> <defense>0</defense> <attackSpeed>2</attackSpeed> <attackRange>3</attackRange> <attackTargetCount>1</attackTargetCount> </attributes>
bullet 字段 (子弹定义)
- 说明:仅当武器类型为
Ranged时有效,用于定义该武器发射的子弹的特性。可以是一个对预定义的<BulletDef>的defName引用,也可以是当前位置的匿名定义。 - 引用方式:
<bullet>BulletDef的defName</bullet> - 匿名定义方式:
<bullet> <defName>匿名子弹名</defName> <!-- 匿名定义也可选择性声明defName --> <label>匿名子弹</label> <!-- 子弹的属性定义 (匿名定义) --> <attributes> <health>1</health> <moveSpeed>20</moveSpeed> </attributes> <!-- 嵌套定义纹理绘制顺序 (匿名定义) --> <drawingOrder> <idle_down> <textures> <li>yellowBullet</li> </textures> </idle_down> </drawingOrder> <!-- 其他子弹独有属性 --> </bullet>