找回密码
 点一下
查看: 1397|回复: 7

怎么判断单位是否在其他单位背后?

[复制链接]
发表于 2008-7-22 13:42:44 | 显示全部楼层 |阅读模式
RT
很复杂把
发表于 2008-7-22 13:43:00 | 显示全部楼层
不复杂,有一个演示
可以参考一下:http://www.islga.org/bbs/read.php?tid=5234
回复

使用道具 举报

发表于 2008-7-22 13:51:01 | 显示全部楼层
简单的说就是判断单位间的角度与单位面向角度之间的关系
回复

使用道具 举报

 楼主| 发表于 2008-7-22 13:54:20 | 显示全部楼层
local real Strike_angle=bj_RADTODEG*Atan2(GetUnitY(GetEventTargetUnit())-GetUnitY(GetTriggerUnit()),GetUnitX(GetEventTargetUnit())-GetUnitX(GetTriggerUnit()))
local real Target_angle=GetUnitFacing(GetEventTargetUnit())
if  (Target_angle-Strike_angle)*(Target_angle-Strike_angle)<4000 then
call UnitAddAbility(GetTriggerUnit(),'A006')
else
call UnitRemoveAbility(GetTriggerUnit(),'A006')
endif
endfunction

看不懂这个,哪位能解释下,不胜感激
回复

使用道具 举报

发表于 2008-7-22 13:57:42 | 显示全部楼层
local real Strike_angle=bj_RADTODEG*Atan2(GetUnitY(GetEventTargetUnit())-GetUnitY(GetTriggerUnit()),GetUnitX(GetEventTargetUnit())-GetUnitX(GetTriggerUnit()))
这个就是两单位间角度
local real Target_angle=GetUnitFacing(GetEventTargetUnit())
这个是单位面向角度
if  (Target_angle-Strike_angle)*(Target_angle-Strike_angle)<4000 then
如果这两个角度的差的平方小于4000,就是两角差小于20,那么就做后续动作

其实这里有点问题,并不应该直接判断小于20,340也是一个临界值
回复

使用道具 举报

 楼主| 发表于 2008-7-22 13:57:53 | 显示全部楼层
引用第2楼zhuzeitou于2008-07-22 13:51发表的  :
简单的说就是判断单位间的角度与单位面向角度之间的关系
攻击时会自动转向,但我指的不攻击时……
回复

使用道具 举报

发表于 2008-7-22 14:02:02 | 显示全部楼层
谁告诉你是攻击时了???
很莫名阿
回复

使用道具 举报

 楼主| 发表于 2008-7-22 14:07:25 | 显示全部楼层
作图做晕了
问题解决,谢谢阁下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 16:19 , Processed in 0.032179 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表