游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2890|回复: 9

请教如何判断子弹朝一个方向打出之后,中间有没有障碍

[复制链接]

14

主题

33

帖子

33

积分

注册会员

Rank: 2

积分
33
发表于 2005-6-28 14:28:00 | 显示全部楼层 |阅读模式
在做一个小射击小游戏,为了敌人能多一点AI,他会判断他跟主角之前有没有障碍,如果有就不开枪,我现在不知道如何 计算两点画一直线,这条直线所经过哪些点?请教各位朋友,谢谢!! [em24]

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-6-28 14:33:00 | 显示全部楼层

Re:请教如何判断子弹朝一个方向打出之后,中间有没有障

3D的还是2D的?
3D的就打条射线穿障碍物的bounding box,穿到了就不开枪。。精确点就穿MESH就好了。

14

主题

33

帖子

33

积分

注册会员

Rank: 2

积分
33
 楼主| 发表于 2005-6-28 14:46:00 | 显示全部楼层

Re:请教如何判断子弹朝一个方向打出之后,中间有没有障

to tarkey 是2D 的

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-6-28 15:13:00 | 显示全部楼层

Re:请教如何判断子弹朝一个方向打出之后,中间有没有障

在直线方程里加上个定义域来表示线段,然后把你的障碍物的边缘拆成一根根的线段,然后二元一次方程求解,有解就碰上了,没解就没碰上。

14

主题

33

帖子

33

积分

注册会员

Rank: 2

积分
33
 楼主| 发表于 2005-6-28 15:29:00 | 显示全部楼层

Re:请教如何判断子弹朝一个方向打出之后,中间有没有障

不是很明白,能不能详细一点,或 给个例子,谢谢你

30

主题

94

帖子

147

积分

注册会员

Rank: 2

积分
147
发表于 2005-6-28 16:55:00 | 显示全部楼层

Re:请教如何判断子弹朝一个方向打出之后,中间有没有障

楼上的方程求解太麻烦了吧?

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-6-28 18:05:00 | 显示全部楼层

Re:请教如何判断子弹朝一个方向打出之后,中间有没有障

二元一次方程求解还是很快的。

14

主题

33

帖子

33

积分

注册会员

Rank: 2

积分
33
 楼主| 发表于 2005-6-28 18:37:00 | 显示全部楼层

Re:请教如何判断子弹朝一个方向打出之后,中间有没有障

to 楼上两位高手,你们能不能给我个例子之类的。谢谢

2

主题

177

帖子

177

积分

注册会员

Rank: 2

积分
177
发表于 2005-6-30 11:54:00 | 显示全部楼层

Re:请教如何判断子弹朝一个方向打出之后,中间有没有障

tarkey说的物体空间求解应该是最常用的办法,但基础不好的人来写误差精度之类问题容易出麻烦

方便的办法可以放在图像空间求解,如果显卡支持硬件的 occlusion query 的话,把 2D 图片作为纹理用 3D 来加速渲染,从敌人枪口向玩家画条线然后通过 occlusion query 获得这条线和障碍物之间被遮挡的像素数,大于0说明发生了重叠,也就是发生了碰撞
但这种方法应用范围窄,对硬件要求有一点点高

如果可以的话最好还是在物体空间求解比较好

这方面的书有很多,最好的有两本都是老外写的,一本是《Geometry Toolbox》,还有一本名字类似记不起来了,都是很大很厚一本,里面对各类几何体的计算方法讲的很详细还有代码,chinapub或dearbook网站上有,用来做参考书很好

4

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
QQ
发表于 2005-6-30 18:07:00 | 显示全部楼层

Re:请教如何判断子弹朝一个方向打出之后,中间有没有障

恩,好书,翻译的也很好.算法很详细.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-26 06:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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