游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1933|回复: 3

关于挡住与穿过的问题!

[复制链接]

11

主题

21

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2007-4-19 16:37:00 | 显示全部楼层 |阅读模式
假如有一个场景,里面有若干柱子,我想实现当摄像机移到柱子前会被挡住,而不是摄像机会穿过柱子.
请问该怎么实现 ?

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
发表于 2007-4-19 17:20:00 | 显示全部楼层

Re:关于挡住与穿过的问题!

这个涉及到物理方面的问题了,需要物理引擎的帮助。可以看一下Ogre demo里面的例子,把摄像机作为一个物体参与碰撞就好了。

51

主题

150

帖子

250

积分

中级会员

Rank: 3Rank: 3

积分
250
发表于 2007-4-19 17:55:00 | 显示全部楼层

Re: 关于挡住与穿过的问题!

在摄像机位置捆绑一个AABB, 创建一个AxisAlignedBoxSceneQuery, 例如:

const unsigned int LIGHT_QUERY_MASK = 0x00000001; //掩码定义
Light* light1 = mSceneMgr->createLight("Light1");
Light* light2 = mSceneMgr->createLight("Light2");
light1->setPosition(12, 12, 12);
light2->setPosition(5, 5, 5);
light1->setQueryFlags(LIGHT_QUERY_MASK);
light2->setQueryFlags(LIGHT_QUERY_MASK);
AxisAlignedBoxSceneQuery* lightQuery =
mSceneMgr->createAABBQuery(AxisAlignedBox(0, 0, 0, 10, 10,10, LIGHT_QUERY_MASK);

SceneQueryResult& results = lightQuery->execute(); //查询

SceneQueryResultMovableList::iterator it = results.movables.begin();
for (; it != results.movables.end(); it++)
{
    assert ((*it)->getQueryFlags() & LIGHT_QUERY_MASK) != 0);
}

mSceneMgr->destroyQuery(lightQuery);

11

主题

21

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2007-4-20 16:34:00 | 显示全部楼层

Re:关于挡住与穿过的问题!

打工仔大哥,能否详细说说呢?你说的是这个例子没错吧?BspCollision
可是我改了老改不成功!
本来里面这样:mCamera->setCollisionEnabled(false);
我把它改为:mCamera->setCollisionEnabled(true);
可是效果还是一样的啊.
怎么回事呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 17:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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