找回密码
 点一下
查看: 3614|回复: 22

怎么捕捉两个单位之间的距离?

[复制链接]
发表于 2008-10-16 22:12:00 | 显示全部楼层 |阅读模式
我想做个伤害与距离长短有关的技能,距离越远伤害越大反之越小.要怎么做这个T?
发表于 2008-10-16 22:16:56 | 显示全部楼层
触发里面实数里有两点间距离,也可以直接利用坐标来算
回复

使用道具 举报

发表于 2008-10-16 22:24:29 | 显示全部楼层
怎么用J获得?
回复

使用道具 举报

发表于 2008-10-16 22:41:15 | 显示全部楼层
先获取两个单位的坐标,然后利用中学数学中的两点间距离公式自己算
回复

使用道具 举报

发表于 2008-10-16 23:32:27 | 显示全部楼层
但是创建单位这样会卡的啊...
回复

使用道具 举报

发表于 2008-10-16 23:34:51 | 显示全部楼层
貌似没有会卡的理由………………
回复

使用道具 举报

发表于 2008-10-16 23:47:45 | 显示全部楼层
那就不清楚了,某年某月某日我自己做了1个技能,要不断创建单位施放技能的,后来我发现这样很卡.创建点起不更好?
回复

使用道具 举报

发表于 2008-10-16 23:53:24 | 显示全部楼层
创建点就需要清楚点,并不是什么好事情,而且效率上相对也要来的低
回复

使用道具 举报

发表于 2008-10-17 15:35:46 | 显示全部楼层
第一个问题很简单:触发1响应单位释放技能,然后为创建触发2,添加接受伤害事件,添加 伤害来源为施法单位,被伤害单位有buff  为条件。触发2响应接受伤害,计算两点距离,伤害,删除条件,删除触发。

两点距离公式...........查在库函数不就行了.........BJ是PolarProjectionBJ,CJ就是该函数的代码........
回复

使用道具 举报

发表于 2008-10-17 16:28:20 | 显示全部楼层
ls错了哦,PolarProjectionBJ可不是两点间距离公式,这个是极坐标点
回复

使用道具 举报

发表于 2008-10-17 19:22:31 | 显示全部楼层
额,错了错了.........应该是勾股玄........初中数学老师要被我气死了.........

为了将功补过把库存函数贴出来..........

[jass]
function DistanceBetweenPoints takes location locA, location locB returns real
    local real dx = GetLocationX(locB) - GetLocationX(locA)
    local real dy = GetLocationY(locB) - GetLocationY(locA)
    return SquareRoot(dx * dx + dy * dy)
endfunction
[/jass]
回复

使用道具 举报

发表于 2008-10-17 21:35:33 | 显示全部楼层
那么技能点呢?要用点了!?
回复

使用道具 举报

发表于 2008-10-17 22:28:11 | 显示全部楼层
灭看出楼上到底要问什么,都是些有的没的东西………………
回复

使用道具 举报

发表于 2008-10-17 22:58:48 | 显示全部楼层
[codes=jass] local unit u = GetTriggerUnit()
    local real ux = GetUnitX(u)
    local real uy = GetUnitY(u)
    local location l = GetSpellTargetLoc()
    local real lx = GetLocationX(l)
    local real ly = GetLocationY(l)
    local real angle = Atan2(ly - uy,lx - ux)
    local real move = SquareRoot((ly - uy)*(ly - uy)+(lx - ux)*(lx - ux))/50.00[/codes]

技能施放点无法获取!
回复

使用道具 举报

发表于 2008-10-17 23:05:01 | 显示全部楼层
不是对点施放的当然不会有GetSpellTargetLoc(),震荡波之类的对点或对人施放的技能如果释放对象是单位,也不会有GetSpellTargetLoc()

但是我是知道什么叫做知错就该的.......
回复

使用道具 举报

发表于 2008-10-17 23:09:47 | 显示全部楼层
ls又错了哦,对人释放同样能获取释放点的
回复

使用道具 举报

发表于 2008-10-17 23:14:42 | 显示全部楼层
为啥我又错了..........

今天被猪头君讲了两次,咳..........
回复

使用道具 举报

发表于 2008-10-17 23:17:48 | 显示全部楼层
啊呀呀,只是指出下,不要介意

话说今天在某处也被纠正了一个一直以来的误区,而且属于看错的那种………………

13楼无法获取的话是不是因为使用了技能停止施放或者施放结束的事件呢?这些事件是捕捉不到这个点的
回复

使用道具 举报

发表于 2008-10-17 23:50:55 | 显示全部楼层
可对人或对点施放的技能如果对人施放的话,GetSpellTargetLoc()获得的是发布命令时目标所处的位置,之后目标移动的话,会有很大的偏差
回复

使用道具 举报

发表于 2008-10-18 15:07:15 | 显示全部楼层
引用第18楼libla于2008-10-17 23:50发表的  :
可对人或对点施放的技能如果对人施放的话,GetSpellTargetLoc()获得的是发布命令时目标所处的位置,之后目标移动的话,会有很大的偏差

虽然如此,但是WE是允许施法缓冲的,一般都是250,其目的就是为了防止施法者正在施法的时候目标移动了。
然而250距离在WAR3中不是很远,两者几乎都可以进行面对面的亲秘接触了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 00:53 , Processed in 0.047628 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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