一、何魔基础原理

1. 极坐标公式

单位绕中心点旋转的兽争实现坐标计算:

`x = centerX + radius Cos(angle)`

`y = centerY + radius Sin(angle)`

2. 周期性触发

使用 `Timer` 或 `Trigger Add Event (Periodic)` 更新单位位置

二、实现步骤(使用 GUI 触发器)

1. 初始化光环单位

plaintext

触发器: Init Aura

事件

地图初始化

条件

动作

设置 CenterUnit = 你的霸中英雄单位 // 旋转中心单位

设置 AuraRadius = 200.00 // 光环半径

设置 RotationSpeed = 5.00 // 旋转速度(角度增量)

设置 AuraEffect = "aura.mdl" // 光环特效路径

设置 AuraUnitsGroup = 空单位组 // 存储所有光环单位

2. 创建旋转单位

plaintext

触发器: Create Aura Units

事件

单位

  • 任意单位 获得技能 (你的光环技能)
  • 条件

    触发单位 是 CenterUnit

    动作

    循环动作[循环A] 从 1 到 8, 运行:

    设置 Angle = 转换 循环整数A 为实数 45.00 // 8个单位间隔45度

    设置 OffsetX = AuraRadius Cos(Angle)

    设置 OffsetY = AuraRadius Sin(Angle)

    设置 SpawnPoint = (CenterUnit 的位置) + (OffsetX, OffsetY)

    单位

  • 创建 1 个 马甲单位 给 CenterUnit 的所有者在 SpawnPoint
  • 单位

  • 设置 最后创建的单位 面向 Angle 度
  • 特效

  • 在 最后创建的单位 的位置创建特效 AuraEffect
  • 单位组

  • 添加 最后创建的单位 到 AuraUnitsGroup
  • 清除 SpawnPoint
  • 3. 实现旋转+移动

    plaintext

    触发器: Rotate Aura

    事件

    时间

  • 每 0.03 秒触发事件
  • 条件

    动作

    如果 AuraUnitsGroup 为空 则跳过

    设置 CurrentCenter = (CenterUnit 的位置)

    单位组

  • 选取 AuraUnitsGroup 内所有单位做动作:
  • 循环动作

    设置 u = 选取单位

    设置 currentAngle = (u 的面向角度) + RotationSpeed

    设置 newX = (CurrentCenter 的X坐标) + AuraRadius Cos(currentAngle)

    设置 newY = (CurrentCenter 的Y坐标) + AuraRadius Sin(currentAngle)

    单位

  • 立即移动 u 到 (newX, newY)
  • 单位

  • 设置 u 的面向角度为 currentAngle
  • 清除 CurrentCenter
  • 三、高级优化

    1. 动态半径调整

    添加实数变量 `AuraRadius` 并在触发器中动态修改

    plaintext

    动作

    设置 AuraRadius = AuraRadius + 10.00 // 扩大半径

    2. 跟随英雄移动

    中心点 `CurrentCenter` 每次循环都会获取英雄当前位置,光环自动跟随

    3. 防止内存泄漏

    每次使用 `点 (Point)` 类型变量后必须调用 `清除点`

    4. 特效同步

    在移动单位后更新特效位置:

    plaintext

    特效

  • 移动 (u 绑定的转和特效) 到 u 的位置
  • 四、效果演示

  • 旋转速度由 `RotationSpeed` 控制,移动值越大旋转越快
  • 马甲单位需设置为 `飞行单位` 或 `无碰撞体积`
  • 可通过调整 `周期时间(0.03秒)` 优化流畅度
  • 完整代码可通过以上触发器组合实现动态旋转+移动的效果光环效果。

    何魔