Flash 與物理筆記 簡單的小球重力模擬

2021-09-05 22:53:02 字數 1477 閱讀 1493

物理是乙個很有趣的東西,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 來講才會有說服力。效果更加好。這部分知識,自己覺得需要慢慢補上,畢竟物理不是很好需要翻閱資料閱讀。所以這部分慢慢努力。

package private function init():void private function ondownhandler(event:mouseevent):void //建立球體 private function creatballs(num:int):void } } } } //模擬的小球 import flash.display.sprite; class ball extends sprite } import flash.display.sprite; import flash.text.textfield; //按鈕 class mybutton extends sprite }

Flash 與物理筆記 上拋運動

學習flash 學一點物理對flash有很大幫助,關於flash與運動學的一些知識在make thing move作者裡面已經很詳細提供了。物理來講,個人學得比較差,中學時代基本上是物理白痴,毫無物理的思維。不得不重新去 搜尋一些概念去學回這種運動學。對於物理的介紹,不能去拋書包,只能記錄一下筆記用...

flash與物理引擎 HelloWorld

最近要看box2d,但是box2d 文件看起來和命名用法確實不是很爽,使用quickbox2d 封裝過還更加有意思。對box2d 完全 還處於停留狀態,因為很多概念還不懂。先記錄一下 版本選擇 box2d 2.1a 當時沒想到向下已經不相容了 所以很多命名和用法都不能除錯到。很多已經學了box2d人...

flash與物理引擎 QuickBox2D

box2d是乙個不錯的2d物理引擎,但是移植as3版本由於過於複雜,加上中文文件比較少 c 有說明 所以用起來比較繁瑣。quickbox2d 是由乙個flash 的開發者封裝的一套類庫,他在box2d 的基礎上進行封裝,封裝之後的引擎符合簡化的目的。我們只是需要一點 就能建立豐富的物理體現,效果非常...