📊 SpellMissile.dbc
SpellMissile.dbc 定义了游戏中法术投射物/弹道的飞行行为配置。控制火球、寒冰箭、暗影箭等飞行投射物的速度、模型路径和行为参数。
📋 字段结构
| 索引 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| 0 | ID | uint32 | 弹道唯一标识符 |
| 1 | Flags | uint32 | 弹道行为标志 |
| 2 | DefaultPitchMin | float | 默认最小俯仰角 |
| 3 | DefaultPitchMax | float | 默认最大俯仰角 |
| 4 | DefaultSpeedMin | float | 默认最小飞行速度 |
| 5 | DefaultSpeedMax | float | 默认最大飞行速度 |
| 6 | RandomizeFacingMin | float | 随机朝向最小值 |
| 7 | RandomizeFacingMax | float | 随机朝向最大值 |
| 8 | RandomizePitchMin | float | 随机俯仰角最小值 |
| 9 | RandomizePitchMax | float | 随机俯仰角最大值 |
| 10 | RandomizeSpeedMin | float | 随机速度最小值 |
| 11 | RandomizeSpeedMax | float | 随机速度最大值 |
| 12 | Gravity | float | 重力系数 |
| 13 | MaxDuration | float | 最大飞行时间(秒) |
| 14 | CollisionRadius | float | 碰撞检测半径 |
📌 关键字段详解
ID - 弹道ID
被 Spell.dbc 的效果字段中的 SpellMissileID 引用。每个飞行法术对应一个弹道配置。常见:1=火球弹道、2=寒冰箭弹道、3=奥术飞弹弹道。
DefaultSpeedMin/Max - 飞行速度
投射物从施法者飞向目标的速度。单位:码/秒。火球约 24、寒冰箭约 22、暗影箭约 20、弓箭约 50。速度越快,命中延迟越短。
Gravity - 重力系数
控制弹道是否受重力影响而下坠。0=直线飞行(火球、暗影箭)、正数=抛物线轨迹(猎人射箭有一定下坠效果)。
CollisionRadius - 碰撞半径
投射物的碰撞检测范围。用于判断投射物是否命中目标或碰到地形。过大可能导致"穿墙"命中,过小可能导致视觉偏差。
🔧 使用示例
查询投射物配置
-- 查询所有投射物速度 > 30 的法术
SELECT DISTINCT s.ID AS SpellID, s.Name, sm.ID AS MissileID, sm.DefaultSpeedMin
FROM spell_dbc s
JOIN spell_missile sm ON s.EffectMissileID_1 = sm.ID
WHERE sm.DefaultSpeedMin > 30;
修改弹道速度
-- 将火球弹道(ID=1)速度提升50%
UPDATE spell_missile SET DefaultSpeedMin = 36, DefaultSpeedMax = 36 WHERE ID = 1;
💡 使用技巧
- 弹道与特效分离:SpellMissile 控制飞行行为,模型在 SpellVisual 的 MissileModel 字段中定义。
- 抛物线效果:设置 Gravity > 0 可实现弓箭/投掷武器抛物线。投掷物品通常 Gravity=0.3~0.5。
- 随机化参数:RandomizeFacing/RandomizePitch 可实现扇形散射效果(如多重射击)。
- MaxDuration:防止投射物无限飞行。到达最大时间后自动消失,避免性能问题。
- 参考链接:AzerothCore Wiki - spell_missile