游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5101|回复: 5

用Ogre::MovableObject::Listener实现简易的碰撞检测

[复制链接]

4

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2008-3-21 15:10:00 | 显示全部楼层 |阅读模式
我原本想用ODE来碰撞检测,但是ogre的wiki里说ODE的release支持的是ogre1.2,我不想把版本退回去,另外提到cvs里有最新的ODE,因该是ogre1.4可以用的ODE,但是我又发现OgreODE,还要编译什么的,我现在也没精力去理清了,希望走在前面的同志能分享一下自己的学习经验。
我在通过做一个飞机部分模拟的程序来学习ogre。这里面目前不要很严格的碰撞检测,所以我就先把ODE放一放了,我发现ogre里有机制可以实现这一点,entity也好,mesh也好,都有boundingbox,而且作为返回值类型的AxisAlignedBox有很方便的方法intersects()来判断和其他AxisAlignedBox是否有交叉的部分,我就是用这个来实现碰撞检测的。
我对飞机的entity添加了一个监听器,因为entity是MovableObject的子类,所以这个监听器肯定就是用Ogre::MovableObject:istener了,写一个该Listener的子类,我写的是class EntityListener : public Ogre::MovableObject::Listener,实现Listener的方法void objectMoved(MovableObject* mobj),当飞机的entity移动时,监听器就会执行这个方法,在方法体里来检测飞机的BoundingBox和地面的BoundingBox有没有接触(我这里的地面是9个会拓展的plane,对于地形的生成,希望走在前面的同志指导一下),我准备对导弹和子弹也类似的处理,希望同志们给些意见。
补充一下,监测到碰撞时,我把boundingbox显示出来,没有碰撞就隐藏了
sf_2008321151014.jpg

4

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2008-3-21 15:11:00 | 显示全部楼层

Re: 用Ogre::MovableObject::Listener实现简易的碰撞检测

2
sf_2008321151050.jpg

4

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2008-3-21 15:11:00 | 显示全部楼层

Re: 用Ogre::MovableObject::Listener实现简易的碰撞检测

3
sf_200832115118.jpg

9

主题

55

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2008-3-22 10:51:00 | 显示全部楼层

Re:用Ogre::MovableObject::Listener实现简易的碰撞检测

有时候包裹框太大..你也可以在Entity的位置上创建一个自定义的模型..例如小一点的圆球..然后用它的包裹框来检查.

4

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2008-3-22 11:14:00 | 显示全部楼层

Re:用Ogre::MovableObject::Listener实现简易的碰撞检测

这个想法也很有意思,不错

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-5-1 16:44:00 | 显示全部楼层

Re: 用Ogre::MovableObject::Listener实现简易的碰撞检测

挺感兴趣
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-13 00:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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