# 修改单位碰撞体积大小
function SetUnitCollisionSize takes unit u, real size returns nothing
1
2
2
# 描述
跟物编一样 修改单位的碰撞体积 会刷新寻路, 依然受到魔兽碰撞上限的限制
就是 当你 size 填 512 的时候 在远距离走路时 魔兽寻路 会按照 512 的碰撞体积去搜索路线, 在近距离时 魔兽会按照最高上限 估计 128 去搜索寻路 单位实际碰撞 也最高只有 128
# 参数
类型 | 名字 | 说明 |
---|---|---|
单位 | u | 填指定单位 |
实数 | size | 碰撞大小 |
# 例子
// 执行以下函数 你会看到 2堆人 按照不同的碰撞大小进行排列。
function test takes nothing returns nothing
local integer i = 0
local unit u
loop
exitwhen i == 100
set i = i + 1
set u = CreateUnit(Player(0), 'hpea', 0, 0, 0)
call SetUnitCollisionSize(u, 256.00) //修改碰撞
call SetUnitPosition(u, 0, 0) //刷新单位位置
endloop
set i = 0
loop
exitwhen i == 100
set i = i + 1
set u = CreateUnit(Player(0), 'hpea', 2000, 0, 0)
call SetUnitCollisionSize(u, 8.00) //修改碰撞
call SetUnitPosition(u, 2000, 0) //刷新单位位置
endloop
endfunction
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
local japi = require 'jass.japi'
local jass = require 'jass.common'
-- 执行以下函数 你会看到 2堆人 按照不同的碰撞大小进行排列。
function test()
local u
for i = 1, 100 do
u = jass.CreateUnit(jass.Player(0), string.unpack('>I4', 'hpea'), 0, 0, 0)
japi.SetUnitCollisionSize(u, 8) --修改碰撞
jass.SetUnitPosition(u, 0, 0) --刷新单位位置
end
for i = 1, 100 do
u = jass.CreateUnit(jass.Player(0), string.unpack('>I4', 'hpea'), 2000, 0, 0)
japi.SetUnitCollisionSize(u, 256) --修改碰撞
jass.SetUnitPosition(u, 2000, 0) --刷新单位位置
end
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27