作者StubbornLin (Victor)
看板GameDesign
标题Re: [问题]音速小子的行为模式
时间Sun Jun 4 16:52:18 2006
※ 引述《linjack (嗯)》之铭言:
: ※ 引述《StubbornLin (Victor)》之铭言:
: 唔, 法线方向上的反作用力不是把物体的法线方向速度归零就好啊 @@"
: 这样的叙述有点怪怪的...
: 力(加速度)与速度应该要分开来看的
: e.g. 一个速度为 vx = 5, vy = 5 的球碰到了铅直的墙壁
: 如果这时把法线方向的速度, 也就是 vx 归零
: 那球就贴壁走了
: 可能您的叙述过於简略了 不知道我有没有误解的地方..
: 另外 在 Platformer 游戏中 (如 Sonic / Mario 之类)
: 或者是 Pinball 类的游戏中..
: 有各式各样的地型 要如何建立一个完善的碰撞系统其实还蛮麻烦的
: 光是去找某个瞬时的碰撞点 碰撞点的切线/法线要如何精确地找出
: 还要考量到各种效率问题 .... 颇复杂 @__@a
: 一点想法.
其实,这是看要创造出什麽样的世界来,物理模拟
真的要做起来,如果考率到效能,要做到很接近拟真是有一定的困难
特别是有很多很多物件会有互动的地方
因此,违反真的物理学,来达到游戏性或是效能是无可避免的
就拿马力欧来说,一般而言,在空中想要改变方向是很困难的事,在你的四周
只有质量很轻的空气,想要移动根本几乎不可能
而为了游戏性,马力欧在空中可以改变方向
我会把法线方向速度归0,是有一个前提假设
就是假设这个球完全不会反弹,应该说是没有弹性
想像一下,一块黏土做的球,往墙上砸的确是会几乎延着墙往下掉
如果不会完全延着墙壁跑的话,那是因为现实中多少可能还有一点点的弹性
当球撞到任何不会动的东西时,因为这个球撞这东西有多大的力量
这个不会动的物体,就会在法线上给一个大小完全相同,方向相反的力量
这就叫反作用力,也就是牛顿的第几运动定律= =" 我忘了
而如果是有弹性的球,那就不一样了
这颗球在接触地面时,反作用力一样会有,只是反作用力施在球上
有一部份会转换成弹性位能,这时球就变形了
而在这时球会想要变回原来的形状,而球依然有重力往下冲
并且比想变回来的弹力还大,一直到往下冲的力量几乎都被弹性位能吃掉
以及被想反弹回来的力量抵消掉,这时,到了这瞬间
球就开始释放弹性位能,开始往上跳
这是一整个球在反弹时的过程,通常这个过程都很短
因此游戏里通常都直接省略这个过程,直接计算出反弹後的速度和方向
我记得有一个弹性碰撞的公式,我晚一点再找出来
以上是我依照我对古典物理的印相所写出来的,有错的话请尽量指出来
其实数学和物理对游戏很重要,因此我在学物理时有自己好好导公式 XD
--
VICTOR工作室 |
PTT游戏设计版隆重开幕!
|
不管是新手老手,程式美工音乐企划....
URL :
http://www.kinmen.info/vic/ |
都欢迎来游戏设计版参与讨论 XD
|
战略高手>
C/C++ |
GameTopics>
Visual Basic 6.0 |
GameDesign
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.116.65.9
1F:推 clifflu:如果是撞 "大东西" 的话,v1 = -t * v0, t 是碰撞耗损 06/04 17:01
2F:→ clifflu:这是法线方向的速度关系。切线方向就看你做不做磨擦了 06/04 17:02
3F:推 llzzyy01:第三定律,这些高中物理都有…… 06/04 22:22