游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2324|回复: 8

做碰撞检测时遇到的问题!!

[复制链接]

77

主题

203

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
发表于 2005-11-27 18:40:00 | 显示全部楼层 |阅读模式
我作了一个碰撞检测的程序,可发现当子弹较快时,会穿过他跟前的人物,而不会与他跟前的人物相撞,我的解决办法是减少子弹和人物在每桢的移动距离,请问还有其他办法么?!

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2005-11-27 19:03:00 | 显示全部楼层

Re:做碰撞检测时遇到的问题!!

作线性插值,然后判断两直线是否相交。

53

主题

419

帖子

451

积分

中级会员

Rank: 3Rank: 3

积分
451
发表于 2005-11-27 19:03:00 | 显示全部楼层

Re:做碰撞检测时遇到的问题!!

如果减慢子弹的速度,将大大影响游戏性~

所以最好的方法就是:当子弹离目标点距离<=子弹的速度时,把子弹的XY坐标变为目标点的坐标,这样就可以了,然后再做接触判断~~~~简单,我的射击游戏就是这么弄的

5

主题

217

帖子

222

积分

中级会员

Rank: 3Rank: 3

积分
222
发表于 2005-11-28 09:27:00 | 显示全部楼层

Re:做碰撞检测时遇到的问题!!

最好的办法是用包围合
以前gameres上翻译了一篇gamedev上面的高级碰撞检测技术,就讲了这种方法.
把前一帧的位置和后一帧的位置当作包围合的两个端点,然后画成长方体,看这个长方体有没有和相应人物的包围体相交.....这种做法解决了连续性问题,因为你的那种方法不具有连续性.所以出问题.

77

主题

203

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2005-11-29 14:05:00 | 显示全部楼层

Re:做碰撞检测时遇到的问题!!

包围合中,如果两个快速移动的物体在某一主循环中一个水平向右,一个竖直向上的交叉通过(按照包围合应该是碰撞的),我应该判断他是碰撞的还是不碰撞?

77

主题

203

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2005-11-29 20:19:00 | 显示全部楼层

Re:做碰撞检测时遇到的问题!!

MathSlope说最好的办法是用包围合,那么,如果有两个快速移动的物体,A水平向右,B竖直向上,一开始A在B的左边,B在A的下边,而他们在某一时刻正好交叉通过(同一时刻A跑到了B的右边,同时B跑到了A的上方),那么我应该判断他是碰撞的还是不碰撞?

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-11-29 21:10:00 | 显示全部楼层

Re:做碰撞检测时遇到的问题!!

要精确就以两个高速物体的运动方向为正,分别取交点到两个物体包围盒起点的距离,两个距离差异小于一定范围判相交

8

主题

130

帖子

156

积分

注册会员

Rank: 2

积分
156
发表于 2005-12-2 13:35:00 | 显示全部楼层

Re:做碰撞检测时遇到的问题!!

基本的办法是检查整个路径上的相交。

也可以:
把路径分为几个步长,每检测走几个步长,步长适度不会穿越。

30

主题

569

帖子

569

积分

高级会员

Rank: 4

积分
569
发表于 2005-12-2 15:33:00 | 显示全部楼层

Re:做碰撞检测时遇到的问题!!

我们在动作启动时计算将在何时发生碰撞,然后在那个时刻发送一个碰撞事件给调度器。
嘿嘿,看不懂的偶可不多解释。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 19:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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