游戏开发论坛

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

请教个碰撞检测问题!

[复制链接]

60

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
QQ
发表于 2006-2-17 09:51:00 | 显示全部楼层 |阅读模式
我刚学碰撞检测,书上提到设定一个物体的多个碰撞点跟另一个物体的范围(这个范围一般用多个长方形表示)作比较,看看这些碰撞点是否在另一个物体的范围内,若在,表示碰上了,不在,表示没有碰上。我想问一下,这种设定碰撞点的做法精确么?
一般的碰撞检测都用这种方法么?若不是,请介绍另一种常用的方法!
谢谢各位前辈!

22

主题

92

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
发表于 2006-2-17 10:15:00 | 显示全部楼层

Re: 请教个碰撞检测问题!

这种应该是比较精确的,但是点要取好
2D中还可以用多个矩形列表检测,效果令人满意
3D中也一样,用包围球包围体,不过处理凹多边形要处理一下
如果检测线和每个多边形碰撞还要维持合适的帧数,以现在硬件简直是神话

60

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
QQ
 楼主| 发表于 2006-2-17 10:56:00 | 显示全部楼层

Re:请教个碰撞检测问题!

2D中还可以用多个矩形列表检测,效果令人满意

这个应该是矩形跟矩形作碰撞检测吧!
能详细给我介绍一下怎样判断么?最好有源代码!
多谢了!

30

主题

569

帖子

569

积分

高级会员

Rank: 4

积分
569
发表于 2006-2-17 11:38:00 | 显示全部楼层

Re:请教个碰撞检测问题!

  我们都是请美工做一个专门用于碰撞的模型,以便最大限度的降低检测的三角形数,然后在数学引擎中做动画变换,再然后分区段检测每个三角形和每个三角形,很精确,而且效果还算好。

35

主题

161

帖子

161

积分

注册会员

Rank: 2

积分
161
发表于 2006-2-17 13:13:00 | 显示全部楼层

Re:请教个碰撞检测问题!

hanma的方法应该是很精确的3d碰撞检测了,不知道是用在什么样的游戏中的?

60

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
QQ
 楼主| 发表于 2006-2-17 13:21:00 | 显示全部楼层

Re: Re:请教个碰撞检测问题!

gxhxue: Re:请教个碰撞检测问题!

2D中还可以用多个矩形列表检测,效果令人满意

这个应该是矩形跟矩形作碰撞检测吧!
能详细给我介绍一下怎样判断么?最好有源代码!
多谢了!

谁能帮我解答这个问题啊?
谢谢了!

30

主题

569

帖子

569

积分

高级会员

Rank: 4

积分
569
发表于 2006-2-17 14:08:00 | 显示全部楼层

Re: Re:请教个碰撞检测问题!

happyfire: Re:请教个碰撞检测问题!

hanma的方法应该是很精确的3d碰撞检测了,不知道是用在什么样的游戏中的?

我们是虚拟现实类的,一般游戏中好象做包围盒就可以了,好点的分区段做包围盒,毕竟游戏要检测的大部分都是垂直的东西。

22

主题

92

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
发表于 2006-2-17 16:07:00 | 显示全部楼层

Re: 请教个碰撞检测问题!

2D自己想想就出来了了嘛,这个是两个矩形碰撞检测
至于点是否在矩形不用说了吧
        struct MYRECT
        {
                long x;                        //X坐标
                long y;                        //Y坐标
                long width;                //宽度
                long height;        //高度
        }

        bool Collision(MYRECT &r1, MYRECT &r2)
        {
                long compareWidth = 0, compareHeight = 0;
                bool bool1, bool2;
                bool bImpact = false;
               
                if (r1.x > r2.x)
                        compareWidth = r2.width;
                else
                        compareWidth = r1.width;
               
                if (r1.y > r2.y)
                        compareHeight = r2.height;
                else
                        compareHeight = r1.height;
               
                bool1 = abs(r1.x - r2.x) <= compareWidth;
                bool2 =  abs(r1.y - r2.y) <= compareHeight;
               
                if (bool1 && bool2)
                        bImpact = true;
               
                return bImpact;
        }

35

主题

161

帖子

161

积分

注册会员

Rank: 2

积分
161
发表于 2006-2-20 09:41:00 | 显示全部楼层

Re:请教个碰撞检测问题!

2D矩形相交测试,就是传说中的AABB算法。。
http://www.86vr.com/game/tech/design/200501/4988.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 11:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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