|
发表于 2010-7-9 20:43:56
|
显示全部楼层
function straightline txxxx
local unit a=Loadxxx
local unit b=loadxxx
local real x=GetUnitX(a)
local real y=GetUnitY(a)
local real x1=GetUnitX(b)
local real y1=GetUnitY(b)
local real angle=Atan2((y1-y),(x1-x))//这个得到两点间的角度,(弧度制)
local real angle1=angle+bj_PI/2//逆时针转了90度方向就变为垂直了,然后需要在这个方向上作简谐运动
call SetUnitX(a,x+dist*Cos(angle))
call SetUnitY(a,y+dist*Sin(angle))//dist参数决定移动的快慢,单计时器时间一定的时候
call setUnitX(a,x+A*Sin(wt+c)*Cos(angle1))
call setUnitY(a,y+A*Sin(wt+c)*Sin(angle1))//不知道对不对,,这个的意思是在angle1这个方向上移动A*Sin(wt+c)w和A需要慢慢尝试,它看上去是振幅但是我不确定。。。。因为没有试过。。。
call savexxxx a
call savexxxx b
set a=null
set b=null
set tm=null
endfunction
这个函数用,用计时器运行,但是计时器没有参数传递,需要用哈希表。。。。。
然后在垂直于这条线的方向上,,,用计时器运行正玄函数就可以了,正玄函数也可以写在上面的函数上。。。。。。测试的时候我通常都是用0.01秒的计时器,,,,还有。。设定好边界,不然出了地图就可能死机。。。。 |
|