分享
 
 
 

《物理学的弹性》分析

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

对蓝色理想经典论坛中的一篇关于“物理学的弹性”教程的分析,讲解比较清晰……

首先,来认识一下弹性效果,我们这里把它理解为力,这个力拖动物体到目的地,并且当物体与目的地越远,这个力越大,就想弹簧上吊了一个物体!

现在,开始一步步写代码。

首先,随便制造一个mc,比如画一个小球,把它放在舞台的左边,对该mc写如下代码:

onClipEvent(load){

vx=1;

}

onClipEvent(enterFrame){

_x+=vx;

}

vx表示沿x轴方向的速度,_x+=vx 等于_x=_x+vx. 我们在mc每一桢都使其x坐标加上速度。测试动画,我们能看到小球匀速运动。那要是让它是变速的,怎么办?对了,我们可改变vx,让vx逐桢变换,即给它一个加速度:

onClipEvent(load){

vx=1;

ax=.1;

}

onClipEvent(enterFrame){

vx+=ax;

_x+=vx;

}

测试动画,我们看到小球逐渐加速。如果把vx变为5,ax该为-0.1,这时小球先减速,再反向加速。

我们的目的应是小球先向右加速,然后减速再反向,再循环,好像以一定点为中心振动。

下一步,我们设置一个中心,用tx表示该中心的x坐标,然后求出tx和_x间的距离,加速度ax与距离成正比,即距离越近,加速度越小。

onClipEvent(load){

tx=250;

}

onClipEvent(enterFrame){

// ax is a fraction of the distance from tx to _x

ax=(tx-_x)*.2;

vx+=ax;

_x+=vx;

}

现在,我们看到小球在来回跳跃,现实情况应该就像有能量损失,小球的振幅应逐渐减小。现在用k代替上式中的0.2,它就像弹簧的劲度系数;用damp=0.9表示每次振幅减小的幅度:

onClipEvent(load){

tx=250;

k=.2;

damp=.9;

}

onClipEvent(enterFrame){

// ax is a fraction of the distance from tx to _x

ax=(tx-_x)*k;

vx+=ax;

vx*=damp;

_x+=vx;

}

现在,你就可看到真实的弹性效果,你可改变参数damp和k;另外,如法炮制对y坐标采用同样的方法。代码如下:

onClipEvent(load){

tx=250;

ty=250;

k=.2;

damp=.9;

}

onClipEvent(enterFrame){

ax=(tx-_x)*k;

ay=(ty-_y)*k;

vx+=ax;

vy+=ay;

vx*=damp;

vy*=damp;

_x+=vx;

_y+=vy;

}

我们还让小球能被拖动,如下:

1.双击小球进入编辑状态;

2.选中整个小球,把它转变为一个按钮;

3.在按钮上写代码:

on(press){

startDrag("");

drag=true;

}

on(release, releaseOutside){

stopDrag();

drag=false;

}

4.回到mc的代码中,改变如下:

onClipEvent(enterFrame){

if(!drag){

ax=(tx-_x)*k;

ay=(ty-_y)*k;

vx+=ax;

vy+=ay;

vx*=damp;

vy*=damp;

_x+=vx;

_y+=vy;

}

}

到现在,我们用的是一个定点(250,250),我们也可把他改为鼠标的坐标,用_root._xmouse等来表示:

onClipEvent(load){

k=.2;

damp=.9;

}

onClipEvent(enterFrame){

ax=(_root._xmouse -_x)*k;

ay=(_root._ymouse -_y)*k;

vx+=ax;

vy+=ay;

vx*=damp;

vy*=damp;

_x+=vx;

_y+=vy;

}

至此,教程就算结束.

转自经典:Aero-lk

这份教程的目的是能产生出一定数量的条件下弹性效果的动作脚本提供一种起实际作用的知识。即弹性数学计算知识。从迅速移动、摆动到实际上的弹性动作,这些数学知识都是基于胡克定律的,而且几乎在每本关于物理的书上都能找到该定律。

概述:

弹性动画是非常吸引人的,它能赋予物体反应、动作上的灵性。问题关键在于要对有关数学原理有一个实际的理解。你必须熟悉以下三个基本术语:

position(p) : 位置(p)

velocity(v) : 速度(v)

acceleration(a) : 加速度(a)

上面三个概念在弹性动画中都有应用。你可能对这些事实非常熟悉了,即一根弹簧对外力有反应(例如拉伸作用),加在它身上的外力越大,那么这根弹簧的反作用力就越大。这个事实是弹性动画的基础,也就是所说的胡克定律。

弹簧反作用力是由被称为"弹性系数(k)"的常数决定的。进一步的说,在一个无摩擦的环境中,这根弹簧是永远的伸缩摆动下去的,只要一旦它被外力拉动。所以我们再引入一个"阻碍常量(c)"来限制动作慢慢的停下来。因此,下面就是我们要使用到的数学计算公式:

-k*(P-Po)=A //一个元素,其加速度与弹簧的位移比例

c*v=A //一个元素,其加速度与速度成比例已限制动作的进行

因此,

A=-k*(P-Po)+c*v

上面公式中:

Po是初始条件,也就是物体在屏幕上的初始位置、初始比例或者初始大小。

k是弹性系数

c是阻碍常数

在这个等式,你会注意到两项都会产生加速度,它会改变物体的速度,正如速度可以改变物体的位移一样。因此原理分析如下 : 当我们将一个物体从其初始状态而变为另一个状态时,一个加速度就产生了,它可以依次产生一个速度,而这个速度又会改变物体的位移以便使其回到原来状态。然而,当它回到初始位置时,又没有作用力去让它停下来,因此它会继续运动(过头了)。再一次,弹簧会产生一个加速度让物体回到它的初始位置,所以若没有阻碍力,物体将在其初始位置左右不停的摆动或者左右移动。初始状态可以是它在屏幕上的位置、大小、比例、透明度等等。

有关位移状态、速度和加速度的公式是:

A=-k*(P.current-P.initial) //即A=-k*(当前状态-初始状态)

V.current=c*V.last+A//即当前速度=c*前一速度+

P.current=P.last+V.current //即当前状态=前一状态+当前速度

将这种动作应用于MC的方法是:

onClipEvent (enterFrame) {

dx = this._xscale-xo; //初始化X轴坐标下的弹性形变或摆动

dy = this._yscale-yo; //初始化Y轴坐标下的弹性形变或摆动

ax = -_root.spring*dx; //生成X轴坐标下的加速度

ay = -_root.spring*dy; //生成Y轴坐标下的加速度

vx = vx*_root.damp+ax; //生成X轴坐标下的速度

vy = vy*_root.damp+ay; //生成Y轴坐标下的速度

this._xscale += vx; //将物体向其初始化的X轴坐标移动

this._yscale += vy; //将物体向其初始化的Y轴坐标移动

}

弹性值可以安下述方法设定其初始状态:

onClipEvent (load) {

xo = 100;

yo = 100;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有