如何沿墙壁滑动

FW:http://www.azure.com.cn/article.asp?id=217 

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

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

uploads/200610/08_153451_graph.gif



假设当前速度为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

滑动就这么简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值