游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5472|回复: 11

终于把场景AABB碰撞搞定了,人物只能沿障碍物外围滑动

[复制链接]

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2007-5-14 14:49:00 | 显示全部楼层 |阅读模式
按计划用周末的时间
场景对象的视锥剔除,及人物AABB盒子碰撞检测都搞出来了,好象也没想象中那么复杂,
很兴奋,发个图出来庆祝庆祝
有时间,再去搞OBB
sf_2007514144928.jpg

36

主题

197

帖子

197

积分

注册会员

Rank: 2

积分
197
发表于 2007-5-14 15:21:00 | 显示全部楼层

Re:终于把场景AABB碰撞搞定了,人物只能沿障碍物外围滑动

大哥能开源看看吗。。。或者说说技术要领和你制作中遇到的一些问题

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-5-14 16:51:00 | 显示全部楼层

Re:终于把场景AABB碰撞搞定了,人物只能沿障碍物外围滑动

源码写的很乱,暂时不打算拿出来共享
但技术细节思路可以拿出来分享。AABB碰撞,以及限制人物的移动方向,到的确涉及到一些简单的数学以及几何问题。

29

主题

354

帖子

359

积分

中级会员

Rank: 3Rank: 3

积分
359
QQ
发表于 2007-5-14 18:34:00 | 显示全部楼层

Re:终于把场景AABB碰撞搞定了,人物只能沿障碍物外围滑动

使用射线法实现的吗?循环检测所有面?

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-5-14 19:10:00 | 显示全部楼层

Re:终于把场景AABB碰撞搞定了,人物只能沿障碍物外围滑动

未用到射线,思路大致如下
if(相交) {
   if(移动方向z方向的分量 * (boxcenter.z - rolepos.z)>0) //移动方向相同,z方向被阻挡
    {
          //只能沿x方向移动...
    } else { //z方向没有被阻挡
         //自由移动
    }

   if(移动方向x方向的分量 * (boxcenter.x - rolepos.x)>0) //移动方向相同,x方向被阻挡
    {
          //只能沿z方向移动...
    } else { //x方向没有被阻挡
         //自由移动
    }
}

45

主题

1163

帖子

1165

积分

金牌会员

Rank: 6Rank: 6

积分
1165
发表于 2007-5-14 21:45:00 | 显示全部楼层

Re:终于把场景AABB碰撞搞定了,人物只能沿障碍物外围滑动

希望写几篇心得体会

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-5-15 00:02:00 | 显示全部楼层

Re:终于把场景AABB碰撞搞定了,人物只能沿障碍物外围滑动

现在还静不下心来好好去写一两篇文章出来,实在是很抱歉
我是业余,非专业的,而且是单干,搞d3d都只能挤出时间来,现在也只是半桶水的实力
水平实在有限,不敢在这么多高手面前献丑
不管怎么说,等有空了,也写点文章上来,别成笑料就好。

29

主题

354

帖子

359

积分

中级会员

Rank: 3Rank: 3

积分
359
QQ
发表于 2007-5-15 18:36:00 | 显示全部楼层

Re: Re:终于把场景AABB碰撞搞定了,人物只能沿障碍物外围

tonykee: Re:终于把场景AABB碰撞搞定了,人物只能沿障碍物外围滑动,有图

未用到射线,思路大致如下
if(相交) {
   if(移动方向z方向的分量 * (boxcenter.z - rolepos.z)>0) //...

这种方法只能在平行于X,Z轴的面上起到检测作用,对于一些不规则面就不灵了.

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-5-15 18:59:00 | 显示全部楼层

Re:终于把场景AABB碰撞搞定了,人物只能沿障碍物外围滑动

还没去研究有向包围盒OBB,其实思路都有了,
那就是把OBB放到AABB盒子里面
先检测AABB碰撞(粗检测,这种检测效率很高)
如果发生了碰撞,再检查角色与AABB盒子内部的OBB盒子的碰撞(细节检测,做了粗检测,再做细节检测,效率不会降低),这样就需要对OBB每个面都去检测了

我想去使用椭圆检测的方法,这个论坛有篇文章写的很好,我将会去采纳

0

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2007-5-19 15:04:00 | 显示全部楼层

Re: 终于把场景AABB碰撞搞定了,人物只能沿障碍物外围滑

不错  做了就是成功  不象我只是说
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 09:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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