🎮 坐标运用 — 演示图实战
演示图:坐标运用.w3x
触发器数:12
📁 本地路径:
F:\AI\AI-machine\W3演示图\
📑 触发器目录
- 1
- 坐标冲锋
- 坐标冲锋-判断地形
- 如果要测试 判断地形,请把“坐标冲锋”关闭
- 在‘触发器注释’上方可开启关闭
- 坐标的好处
- 坐标计算 xy1 到 xy2 的距离、角度
- 坐标计算 xy1 到 xy2 的距离、角度 简洁
- 坐标画圆-1
- 坐标画圆-2
📜 触发器代码
1
text
触发器: 1 (初始化) [✓] —
不再使用的‘触发’建议删除。
───────────────────────────────────────────────────────
事件
└─ 注册计时器单次事件(0.00)
条件
└─ 无
动作
├─ 战争迷雾开关: EnabledDisabledDisabled
├─ 迷雾遮罩开关: EnabledDisabledDisabled
├─ 为 Player00 选择 gg_unit_Udre_0000
├─ SetCameraField: CameraFieldTargetDistance, 2800.00, 0
└─ 销毁触发器(自身)坐标冲锋
text
触发器: 坐标冲锋 (剧情/任务) [✓]
───────────────────────────────────────────────────────
事件
└─ 任意单位 - PlayerUnitEventSpellEffect
条件
└─ 技能ID比较(施法技能ID(), OperatorEqualENE, A000)
动作
├─ 设置局部变量:"dw"=触发单位()
├─ 设置局部变量:"x"=单位X坐标(读取局部变量("dw"))
├─ 设置局部变量:"y"=单位Y坐标(读取局部变量("dw"))
├─ ── ---- ──
├─ ── 这里的角度计算 = 触发单位的位置 到 技能释放点 的角度 ──
├─ ── 我偷懒就不记录 技能释放点的xy坐标 了,毕竟后面根本用不到 ──
├─ 设置局部变量:"jd"=Atan2BJ((GetSpellTargetY() - 读取局部变量("y")), (GetSpellTargetX() - 读取局部变量("x")))
├─ ── 但是要注意,技能施法结束,就无法获取到技能释放点xy,所以要在结束前使用 ──
├─ ── ---- ──
├─ ── 创建一个空单位组,避免敌人被多次伤害 ──
├─ 设置局部变量:"dwz"=CreateGroup()
├─ ── 创建一个单位(马甲)来进行冲锋位移,因为是创建马甲位移,无需设置创建某某玩家的马甲,直接用玩家1就好,省事 ──
├─ 设置局部变量:"mj"=创建单位(指定坐标)(Player00, e000, 读取局部变量("x"), 读取局部变量("y"), 读取局部变量("jd"))
├─ YDWETimerRemoveUnit: 1.00, 读取局部变量("mj")
├─ ── 0.05秒进行一次位移,持续1秒,想位移多长距离自己设置 ──
└─ 启动计时器: 创建计时器(), 0.05s (循环)坐标冲锋-判断地形
text
触发器: 坐标冲锋-判断地形 (剧情/任务) [✓]
───────────────────────────────────────────────────────
事件
└─ 任意单位 - PlayerUnitEventSpellEffect
条件
└─ 技能ID比较(施法技能ID(), OperatorEqualENE, A000)
动作
├─ 设置局部变量:"dw"=触发单位()
├─ 设置局部变量:"x"=单位X坐标(读取局部变量("dw"))
├─ 设置局部变量:"y"=单位Y坐标(读取局部变量("dw"))
├─ 设置局部变量:"jd"=Atan2BJ((GetSpellTargetY() - 读取局部变量("y")), (GetSpellTargetX() - 读取局部变量("x")))
├─ 设置局部变量:"dwz"=CreateGroup()
├─ 设置局部变量:"mj"=创建单位(指定坐标)(Player00, e000, 读取局部变量("x"), 读取局部变量("y"), 读取局部变量("jd"))
├─ YDWETimerRemoveUnit: 1.00, 读取局部变量("mj")
└─ 启动计时器: 创建计时器(), 0.05s (循环)如果要测试 判断地形,请把“坐标冲锋”关闭
text
触发器: 如果要测试 判断地形,请把“坐标冲锋”关闭 (剧情/任务) [注释] [✓]
───────────────────────────────────────────────────────
事件
└─ (无)
条件
└─ 无
动作
└─ (无)在‘触发器注释’上方可开启关闭
text
触发器: 在‘触发器注释’上方可开启关闭 (剧情/任务) [注释] [✓]
───────────────────────────────────────────────────────
事件
└─ (无)
条件
└─ 无
动作
└─ (无)坐标的好处
text
触发器: 坐标的好处 (技能/物品) [注释] [✓]
───────────────────────────────────────────────────────
事件
└─ (无)
条件
└─ 无
动作
└─ (无)-----------
text
触发器: ----------- (技能/物品) [注释] [✓]
───────────────────────────────────────────────────────
事件
└─ (无)
条件
└─ 无
动作
└─ (无)坐标计算 xy1 到 xy2 的距离、角度
text
触发器: 坐标计算 xy1 到 xy2 的距离、角度 (技能/物品) [✗] —
同‘点1’到‘点2’的距离
同‘点1’到‘点2’的角度
关于‘反正切’请 → https://baike.so.com/doc/6497204-6710919.html
‘次幂’ 同 ‘次方’,只是叫法不同。
这就是所谓在触发中进行‘次方’计算的操作了
───────────────────────────────────────────────────────
事件
└─ 任意单位 - PlayerUnitEventSpellEffect
条件
└─ 技能ID比较(施法技能ID(), OperatorEqualENE, A001)
动作
├─ 设置局部变量:"x"=单位X坐标(触发单位())
├─ 设置局部变量:"y"=单位Y坐标(触发单位())
├─ 设置局部变量:"x2"=GetSpellTargetX()
├─ 设置局部变量:"y2"=GetSpellTargetY()
├─ ── 同‘点1’到‘点2’的角度 ──
├─ ── 这里的‘数学 - 反正切 Y:X’,我也不知道该怎么解释,如果你能明白那最好,不能就‘死记硬背’ ──
├─ ── 死记硬背逻辑 (技能y坐标 - 单位y坐标) : (技能x坐标 - 单位x坐标) ──
├─ 设置局部变量:"jd"=Atan2BJ((读取局部变量("y2") - 读取局部变量("y")), (读取局部变量("x2") - 读取局部变量("x")))
├─ ── ──
├─ ── 同‘点1’到‘点2’的距离 ──
├─ ── 逻辑:设坐标1为 x1,y1 、 坐标2为 x2,y2。 ──
├─ ── 则两坐标之间距离 = ( (x1-x2)2次方 + (y1-y2)2次方 )的平方根 ──
├─ ── ‘次幂’ 同 ‘次方’,只是叫法不同。 ──
├─ 设置局部变量:"jl"=平方根((Pow((读取局部变量("x") - 读取局部变量("x2")), 2.00) + Pow((读取局部变量("y") - 读取局部变量("y2")), 2.00)))
├─ YDWETimerPatternRushSlide: 触发单位(), 读取局部变量("jd"), 读取局部变量("jl"), 0.50, 0.01, 0, false, false, false, "origin", ,
└─ 显示文本→Player00: 0坐标计算 xy1 到 xy2 的距离、角度 简洁
text
触发器: 坐标计算 xy1 到 xy2 的距离、角度 简洁 (技能/物品) [✓] —
───────────────────────────────────────────────────────
事件
└─ 任意单位 - PlayerUnitEventSpellEffect
条件
└─ 技能ID比较(施法技能ID(), OperatorEqualENE, A001)
动作
├─ 设置局部变量:"x"=单位X坐标(触发单位())
├─ 设置局部变量:"y"=单位Y坐标(触发单位())
├─ 设置局部变量:"x2"=GetSpellTargetX()
├─ 设置局部变量:"y2"=GetSpellTargetY()
├─ 设置局部变量:"jd"=Atan2BJ((读取局部变量("y2") - 读取局部变量("y")), (读取局部变量("x2") - 读取局部变量("x")))
├─ 设置局部变量:"jl"=平方根((Pow((读取局部变量("x") - 读取局部变量("x2")), 2.00) + Pow((读取局部变量("y") - 读取局部变量("y2")), 2.00)))
├─ YDWETimerPatternRushSlide: 触发单位(), 读取局部变量("jd"), 读取局部变量("jl"), 0.50, 0.01, 0, false, false, false, "origin", ,
└─ 显示文本→Player00: 0-----------
text
触发器: ----------- (技能/物品) [注释] [✓]
───────────────────────────────────────────────────────
事件
└─ (无)
条件
└─ 无
动作
└─ (无)坐标画圆-1
text
触发器: 坐标画圆-1 (技能/物品) [✓] —
‘坐标画圆’同‘坐标冲锋’,只是把角度变换而已
───────────────────────────────────────────────────────
事件
└─ 任意单位 - PlayerUnitEventSpellEffect
条件
└─ 技能ID比较(施法技能ID(), OperatorEqualENE, A002)
动作
├─ 设置局部变量:"x"=单位X坐标(触发单位())
├─ 设置局部变量:"y"=单位Y坐标(触发单位())
├─ YDWEForLoopLocVarMultiple: "q", 1, 10
└─ YDWEEnumUnitsInRangeMultiple: 读取局部变量("x"), 读取局部变量("y"), 600.00坐标画圆-2
text
触发器: 坐标画圆-2 (技能/物品) [✓] —
‘坐标画圆’同‘坐标冲锋’,只是把角度变换而已
───────────────────────────────────────────────────────
事件
└─ 任意单位 - PlayerUnitEventSpellEffect
条件
└─ 技能ID比较(施法技能ID(), OperatorEqualENE, A003)
动作
├─ 设置局部变量:"x"=单位X坐标(触发单位())
├─ 设置局部变量:"y"=单位Y坐标(触发单位())
├─ YDWEForLoopLocVarMultiple: "w", 1, 5
└─ YDWEEnumUnitsInRangeMultiple: 读取局部变量("x"), 读取局部变量("y"), 1500.00