天天看點

Flash/Flex學習筆記(40):彈性運動續--彈簧

上一篇裡示範的彈性運動加上摩擦力因素後,物體最終基本上都會比較準确的停在目标位置。但是我們回想一下現實世界中的彈簧,如果把彈簧的一頭固定起來(即相當于目标點),而另一端栓一個球,把球拉開或壓縮一定距離然後松手,事實上小球永遠也不可能到達彈簧固定的那一端(因為彈簧即使壓縮到最緊,也總有一定的長度)

是以如果要在Flash裡模拟現實中的彈簧,真正的目标點絕不是彈簧的端點,而是目标點再偏移一段距離(即彈簧自然伸展時的長度)

如果考慮到二維坐标的彈簧運動,要稍微複雜一點:

Flash/Flex學習筆記(40):彈性運動續--彈簧

上面的例子中,移動的方向(即夾角)與目标點都是固定的,如果改成動态的(比如滑鼠目前所在位置),效果可能更逼真

如果二個物體互相以對方所在位置為目标做彈性運動,同時再考慮彈簧長度,邊界檢測等因素,可以用AS3模拟出一個極逼真的彈簧模型:

如果玩得再瘋狂一點,多放一些小球,讓第二個以第一個為目标,第三個以第二個為目标...最後一個再以第一個為目标,這樣構成一個環,大概就是下面這個樣子:

思考一下:這樣為啥不會造成死循環?