游戏开发论坛

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

接着上次,沿墙壁滑动实现(原创)

[复制链接]

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2007-4-10 10:17:00 | 显示全部楼层 |阅读模式
原文地址:
http://www.azure.com.cn/article.asp?id=217

如有转载,请注明出处:
http://www.azure.com.cn/

碰撞一般分成两个部分,碰撞的检测和碰撞的响应。
碰撞的检测前面已经说过了,无非就是射线与三角形求交。
当已经检测有碰撞发生了以后,你当然不能让主角停在原地不动了吧,
所以当主角与墙壁发生碰撞以后,让主角沿墙壁滑动就显得相当的重要了。

其实这个算法很简单,见下图:



假设当前速度为V,当前坐标为p1,通过速度V我们可以求出p2点,
所以p1,p2两点组成一条线段,首先检测碰撞,即p1,p2组成的线段是否与平面相交

如果已经相交,则进行碰撞处理:
1 - 先求出p2到平面的距离d
2 - 将d 乘以 面的法线N,得到向量v1
3 - 得到向量 (p2 - O) = v3
4 - 所以如图 v0 = v1 + v3

所以v0即为沿墙壁滑动的向量,所以最终的滑动的位置 p3 = O + v0

滑动就这么简单。



www.azure.com.cn

31

主题

278

帖子

298

积分

中级会员

Rank: 3Rank: 3

积分
298
发表于 2007-4-13 17:10:00 | 显示全部楼层

Re:接着上次,沿墙壁滑动实现(原创)

沙发

31

主题

278

帖子

298

积分

中级会员

Rank: 3Rank: 3

积分
298
发表于 2007-4-13 17:11:00 | 显示全部楼层

Re:接着上次,沿墙壁滑动实现(原创)

如果遇到墙不滑动,而是可以往上爬,怎么搞

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
 楼主| 发表于 2007-4-13 17:49:00 | 显示全部楼层

Re:接着上次,沿墙壁滑动实现(原创)

想上爬也是一种形式的滑动吧,在Y轴上滑动。

4

主题

127

帖子

137

积分

注册会员

Rank: 2

积分
137
发表于 2007-4-27 14:11:00 | 显示全部楼层

Re:接着上次,沿墙壁滑动实现(原创)

增加点难度。实时的3D地形对物体有作用力效果。摩擦暂且忽略/。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2007-4-27 16:25:00 | 显示全部楼层

Re:接着上次,沿墙壁滑动实现(原创)

最麻烦的是处理在锐角处的碰撞反映
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 16:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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