作者StubbornLin (Victor)
看板GameDesign
标题Re: [问题]音速小子的行为模式
时间Sun Jun 4 13:33:54 2006
※ 引述《StubbornLin (Victor)》之铭言:
: ※ 引述《etrexetrex (ETREX)》之铭言:
: 判断目前的速度v在经过了一段很短的时间後的下一刻
: 这段时间是Δt,在经过Δt的路线上
: 是否会穿过某样物体,而这个Δt,就是上次更新和这次更新的时间差
: 新的的座标位置
: y = y + vy*Δt;
: 新的速度
: vy = vy + g*Δt;
: 作法是,目前的座标,和下一刻的座标,两点间的连线
: 看是否会交某个物件
: 如果不会穿过某样物体,也就是没有碰撞,就让它继续往下掉
: 如果会穿过某样物体,就要进行碰撞的运算
: 这要看你的的球是否要给它弹性的特性,在这里我们假设它没有弹性
: 也就是掉下去就不会再弹起来
: 接着,你只要找出Δt内行进路线里,最先与物体接触的那点
: 把球的位置设在那点上面,这样应该就OK了
修正一下,应该要这样说,碰撞到的那一点,的法向量,也就是
垂直於那个表面的方向,给与一个这颗球在这个法向量方向上面等同大小的反作用力
就可以抵消,简单的来讲,就是那个方向的速度归0
这样来做应该才比较正确,因为如果是x方向碰撞到,只有x方向的速度归0
而y还会继续往下掉
● 当撞到的一瞬间,速度在法线项量要抵消掉
↓
↑ 法线向量
-----------------------------------
就算表面是斜的,一样也是法向量速度归0
--
VICTOR工作室 |
PTT游戏设计版隆重开幕!
|
不管是新手老手,程式美工音乐企划....
URL :
http://www.kinmen.info/vic/ |
都欢迎来游戏设计版参与讨论 XD
|
战略高手>
C/C++ |
GameTopics>
Visual Basic 6.0 |
GameDesign
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.116.65.9