找回密码
 点一下
查看: 970|回复: 6

谁有更好的背刺的计算

[复制链接]
发表于 2009-12-31 04:18:20 | 显示全部楼层 |阅读模式
local real Ang1=bj_RADTODEG*Atan2(GetUnitY(ut)-GetUnitY(ua),GetUnitX(ut)-GetUnitX(ua))
local real Ang2=GetUnitFacing(ut)
  if  (Ang2-Ang1)*(Ang2-Ang1)<4000 then
  call UnitTextTag(ut,"背刺"+I2S(Damage),255,0,0)
  endif


这个似乎不太合适。有时候根本不触发……
发表于 2009-12-31 06:39:17 | 显示全部楼层
嗯…………难道直接判断两个单位的朝向之间的差距不行吗?
回复

使用道具 举报

发表于 2009-12-31 07:18:06 | 显示全部楼层
判断朝向我觉得是最好的罢……
回复

使用道具 举报

发表于 2009-12-31 09:11:28 | 显示全部楼层
[jass]function IsLocInDirection takes real x,real y,real tx,real ty,real facing,real sa,real ea returns boolean
    local real ang = (57.296)*Atan2(ty-y,tx-x)+180
    local real rsa = facing + sa
    local real rea = facing + ea
    if(ang>=rsa and ang<=rea)then
        return true
    endif
    set ang = ang + 360.0
    if(ang>=rsa and ang<=rea)then
        return true
    endif
    return false
endfunction

function SneakAttackCheck takes unit u,unit tu returns boolean
    if(GetUnitState(u,UNIT_STATE_LIFE)<=0.0 or GetUnitState(tu,UNIT_STATE_LIFE)<=0.0)then
        return false
    endif
    if(GetUnitAbilityLevel(u,SYD_SneakAttackImmuneBuff)>0)then
        return false
    endif
    if(GetUnitAbilityLevel(u,SYD_SneakAttackAlwaysBuff)>0 or GetUnitAbilityLevel(tu,SYD_SneakAttackFatalBuff)>0)then
        return true
    endif
    return IsLocInDirection(GetUnitX(u),GetUnitY(u),GetUnitX(tu),GetUnitY(tu),GetUnitFacing(tu),120.0,240.0)
endfunction[/jass]
回复

使用道具 举报

发表于 2009-12-31 11:10:06 | 显示全部楼层
角度差的余弦值不是很简单

不得不说,楼主的判断太土了
回复

使用道具 举报

发表于 2009-12-31 11:22:45 | 显示全部楼层
原来是这样。
回复

使用道具 举报

发表于 2009-12-31 11:56:08 | 显示全部楼层
角度的绝对值呢?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 03:13 , Processed in 0.030667 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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