游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2334|回复: 4

直线运动的物体做碰撞检测只能将所有实体遍历一边???

[复制链接]

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-6-24 15:54:00 | 显示全部楼层 |阅读模式
[em10]

类似子弹作直线运动,也许是冲击波,也可以是滋水枪 - -。

我的思路是,每一桢都把当前物体的位置与要做命中检测的所有实体(也就是目标,简称目标)位置做个比较,返回第一个物体间距离达到最小要求的的目标(要严格的话,还要做最近物体,以及正方向判定!我已经 ? 了),每一发子弹都要做一次遍历,太恐怖了, 这么做效率很低吧,有没有什么好方法呢?

给个思路就成

PS:追踪型的子弹比直线型的子弹要容易多了,唉

但是这么做有一个好处,就是可以设置子弹是否可以“穿透”目标,做出串糖葫芦的效果。如果穿透,则返回所有满足条件的目标

我的另一个思路是把子弹射出去的 弹道 作为一个数学函数,把每个目标的一项坐标属性带入到这个函数里面,返回满足最小条件的就是被击中的,然后,取距离最近的那个(如果不取最近的那个,就是激光武器了  [em16] ),但是这个还是要遍历所有目标啊  [em10]

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2007-6-24 17:41:00 | 显示全部楼层

Re:直线运动的物体做碰撞检测只能将所有实体遍历一边?

八叉树, 空间管理 的威力就在这里体现了.

16

主题

280

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
QQ
发表于 2007-6-24 17:59:00 | 显示全部楼层

Re: Re:直线运动的物体做碰撞检测只能将所有实体遍历一

Devil: Re:直线运动的物体做碰撞检测只能将所有实体遍历一边???

八叉树

[em6]这么多的叉树 [em7]

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
 楼主| 发表于 2007-6-24 21:37:00 | 显示全部楼层

Re:直线运动的物体做碰撞检测只能将所有实体遍历一边?

还没接触八叉树,汗下,只能先用遍历了

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2007-6-25 22:31:00 | 显示全部楼层

Re:直线运动的物体做碰撞检测只能将所有实体遍历一边?

几叉树都行,不管什么树都比O(n)时间要短.
一个简单的搜索问题.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 00:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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