再回答我这个问题少年一下,如何判断2人之间障碍物
例如玩家A和玩家B,怎么判断他们之间是否一堵墙阻挡或者一个箱子阻挡呢?回复: 再回答我这个问题少年一下,如何判断2人之间障碍物
连续几天问了3个问题,有点不好意思,可是论坛又搜索不到相关资料和插件。。。:confused:回复: 再回答我这个问题少年一下,如何判断2人之间障碍物
stock bool:fm_is_visible(index, const Float:point, ignoremonsters = 0) {new Float:start, Float:view_ofs;
pev(index, pev_origin, start);
pev(index, pev_view_ofs, view_ofs);
xs_vec_add(start, view_ofs, start);
engfunc(EngFunc_TraceLine, start, point, ignoremonsters, index, 0);
new Float:fraction;
get_tr2(0, TR_flFraction, fraction);
if (fraction == 1.0)
return true;
return false;
}
这个函数是判断index这个人能不能看到point这个点的函数
回复: 再回答我这个问题少年一下,如何判断2人之间障碍物
如果你只想判断两人之间是否有障碍物直接使用两个人坐标分别作为start和point
忽略中间的类人物体可将ignoremonsters设置为1
回复: 再回答我这个问题少年一下,如何判断2人之间障碍物
stock bool:fm_is_visible(plA, plB, ignoremonsters = 0) {new Float:start, Float:point;
pev(plA, pev_origin, start);
pev(plB, pev_origin, point);
engfunc(EngFunc_TraceLine, start, point, ignoremonsters, index, 0);
new Float:fraction;
get_tr2(0, TR_flFraction, fraction);
if (fraction == 1.0)
return true;
return false;
}
回复: 再回答我这个问题少年一下,如何判断2人之间障碍物
太感谢jim_yang大哥了,我赶紧去试试。回复: 再回答我这个问题少年一下,如何判断2人之间障碍物
代码有效,但有个小问题。就是人物模型边缘问题,上面的代码应该是人的中心位置之间是否有障碍物。
例如玩家A站在墙边,看到B玩家的手,但这时会给判断他们之间有障碍物,
有没有办法玩家A完全看不见B玩家才算有障碍物的方法呢?
回复: 再回答我这个问题少年一下,如何判断2人之间障碍物
很难实现,模型边缘和实际坐标之间有出入,而且边缘点很多,如果循环判断的话效率很低回复: 再回答我这个问题少年一下,如何判断2人之间障碍物
Post by jim_yang很难实现,模型边缘和实际坐标之间有出入,而且边缘点很多,如果循环判断的话效率很低
是啊,我用中心点向4边延伸出4个坐标组成一个人物方框来判断,需要循环4次,服务器都lag死了。。。
EngFunc_TraceToss
EngFunc_TraceMonsterHull
EngFunc_TraceHull
EngFunc_TraceModel
EngFunc_TraceTexture
EngFunc_TraceSphere
上面这几个代表什么呢?
回复: 再回答我这个问题少年一下,如何判断2人之间障碍物
你可以看看这个帖子http://forums.alliedmods.net/showthread.php?t=74780&highlight=visible
页:
[1]
2