搜索
查看: 3974|回复: 13

再回答我这个问题少年一下,如何判断2人之间障碍物

[复制链接]
发表于 2008-12-16 10:03:48 | 显示全部楼层 |阅读模式 来自 广东深圳
例如玩家A和玩家B,怎么判断他们之间是否一堵墙阻挡或者一个箱子阻挡呢?
 楼主| 发表于 2008-12-16 10:04:45 | 显示全部楼层 来自 广东深圳

回复: 再回答我这个问题少年一下,如何判断2人之间障碍物

连续几天问了3个问题,有点不好意思,可是论坛又搜索不到相关资料和插件。。。:confused:
回复

使用道具 举报

发表于 2008-12-16 12:11:15 | 显示全部楼层 来自 北京朝阳

回复: 再回答我这个问题少年一下,如何判断2人之间障碍物

stock bool:fm_is_visible(index, const Float:point[3], ignoremonsters = 0) {
new Float:start[3], Float:view_ofs[3];
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这个点的函数
回复

使用道具 举报

发表于 2008-12-16 12:15:14 | 显示全部楼层 来自 北京朝阳

回复: 再回答我这个问题少年一下,如何判断2人之间障碍物

如果你只想判断两人之间是否有障碍物直接使用
两个人坐标分别作为start和point
忽略中间的类人物体可将ignoremonsters设置为1
回复

使用道具 举报

发表于 2008-12-16 12:19:51 | 显示全部楼层 来自 北京朝阳

回复: 再回答我这个问题少年一下,如何判断2人之间障碍物

stock bool:fm_is_visible(plA, plB, ignoremonsters = 0) {
new Float:start[3], Float:point[3];
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;
}
回复

使用道具 举报

 楼主| 发表于 2008-12-16 12:57:43 | 显示全部楼层 来自 广东深圳

回复: 再回答我这个问题少年一下,如何判断2人之间障碍物

太感谢jim_yang大哥了,我赶紧去试试。
回复

使用道具 举报

 楼主| 发表于 2008-12-16 16:05:35 | 显示全部楼层 来自 广东深圳

回复: 再回答我这个问题少年一下,如何判断2人之间障碍物

代码有效,但有个小问题。
就是人物模型边缘问题,上面的代码应该是人的中心位置之间是否有障碍物。
例如玩家A站在墙边,看到B玩家的手,但这时会给判断他们之间有障碍物,
有没有办法玩家A完全看不见B玩家才算有障碍物的方法呢?
回复

使用道具 举报

发表于 2008-12-16 16:12:00 | 显示全部楼层 来自 北京朝阳

回复: 再回答我这个问题少年一下,如何判断2人之间障碍物

很难实现,模型边缘和实际坐标之间有出入,而且边缘点很多,如果循环判断的话效率很低
回复

使用道具 举报

 楼主| 发表于 2008-12-16 16:23:27 | 显示全部楼层 来自 广东深圳

回复: 再回答我这个问题少年一下,如何判断2人之间障碍物

Post by jim_yang
很难实现,模型边缘和实际坐标之间有出入,而且边缘点很多,如果循环判断的话效率很低
是啊,我用中心点向4边延伸出4个坐标组成一个人物方框来判断,需要循环4次,服务器都lag死了。。。
EngFunc_TraceToss
EngFunc_TraceMonsterHull
EngFunc_TraceHull
EngFunc_TraceModel
EngFunc_TraceTexture
EngFunc_TraceSphere
上面这几个代表什么呢?
回复

使用道具 举报

发表于 2008-12-16 16:27:45 | 显示全部楼层 来自 北京朝阳

回复: 再回答我这个问题少年一下,如何判断2人之间障碍物

回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

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