现在的位置: 首页 > 综合 > 正文

Flash 与物理笔记:简单的小球重力模拟

2013年01月05日 ⁄ 综合 ⁄ 共 2805字 ⁄ 字号 评论关闭

重力

 

 

 

   物理是一个很有趣的东西,flash 结合物理是其中一个很重要的方向,也是学习flash技术一个很重要的门。最近翻阅一些资料,复习了一下物理和flash技术,虽然是一点皮毛的东西,不过先把他记录下来。为日后需要作一个基础,下面我们采用小球模拟重力,但是本身没有涉及到质量,没有涉及到球与球之间的碰撞,这样可操作性会简单一些,容易掌握,重力结合当中。在Make thing move 一书当中,这本书已经讲解得很深入,它有碰撞,和能量损失等模拟。可以参考这本书,不过既然初学的,先简单的一些好。自己本身物理知识还在恶补当中。只能一点一点来。

 

重力模拟,只要技巧在于加速度和位移是怎样结合起来。我们知道在每一帧刷新的时候,不断执行

 

(物体.y+=值)。物体就会一直向下移动。

 

(物体的垂直速度vy+=g)加上一个重力加速度,使物体在vy垂直方向的速度有了一个额外的递增值,因此vy值会不断增加

从而物体.y 的值会发生变化,其实flash 里面隐含了一个时间概念。每一帧其实有一个时间间隔,这样这个隐含的时候就会无形加上去了

 

速度公式:vt=v0+at(其中v0为初始速度,t为时间)

位移的公式:s=v0t + 1/2at^2 (其中v0为初始速度,a为加速度,t为时间);

 

这样的组合方式

vy+=a;

物体.y+=vy;

 

就能够产生位移变化。(该公式可以在make thing move 找到)

 

下面就是模拟出一些小球进行,小球采用绘图api来模拟出来。

private function creatBalls(num:int):void 创建一系列的小球

 

 

其中:我们加入了阻力去模拟,效果会更加好,小球受到空气阻力,因此落体的时候会发生速度递减。

    list[i].vy+=g;//加速度加上向下的垂直速度
    list[i].vy*=friction;//阻力
    list[i].y+=list[i].vy;// s=vt;

这里就是关键的地方,不是很难,因为没有涉及到质量和球与球之间碰撞,这部分资料很多,可以去找找。我发现到这部分知识,对一个flash 爱好者来讲,是需要去了解和掌握的。这样就能够创造很多有趣的flash,而最近搜索资料的时候,发觉国外日本和美国那边的flash 都很注重数学和物理方面的培养结合,这样创造出来的flash 来讲才会有说服力。效果更加好。这部分知识,自己觉得需要慢慢补上,毕竟物理不是很好需要翻阅资料阅读。所以这部分慢慢努力。

 

 

抱歉!评论已关闭.