物體隨機飛濺運動! Cocos Creator!

2021-02-18 Creator星球遊戲開發社區


大量物體以隨機初速度的飛濺運動!文章底部附完整代碼!

效果預覽

像火山噴發、煙花等等運動,都是物體隨機飛濺運動。

這個運動其實是拋物運動。

拋物運動也可以看成是勻加速運動。

假設一個物體的初速度為v_0,加速度為a,某一個時刻t的速度公式如下:

對這個公式作一次積分,正好是位移。

s = v_0 * t + 0.5 * a * t * t + C

常量C,是物體的初始位置。

我們把物體分成x和y兩個方向考慮,用上面的公式可以求出在t時刻的物體的位置。為此寫個通用的組建控制每個物體的位置控制。主要代碼如下。

update(dt) {    this._time += dt;    this.node.x = this._initial_position.x + this.initial_velocity.x * this._time + this.acceleration.x * this._time * this._time / 2;    this.node.y = this._initial_position.y + this.initial_velocity.y * this._time + this.acceleration.y * this._time * this._time / 2;}

再來看看如何隨機初始速度。

當然直接使用Math.random()可以實現。參考代碼如下。

// 0-1 均勻分布const random_a = Math.random();const random_b = Math.random();
// 均勻分布的初速度coin.initial_velocity.x = random_a * (V_X_MAX - V_X_MIN) + V_X_MIN;coin.initial_velocity.y = random_b * (V_Y_MAX - V_Y_MIN) + V_Y_MIN;

生成的結果如下。

這個運行結果可能看起來不太自然。這是為什麼呢?

因為自然界中的初速度不是均勻分布的,而是正態分布。

如何生成正態分布的初速度?這裡用到Box-Muller算法。這個算法是根據均勻分布的隨機數來產生正態分布的隨機數算法。

 將這個標準正態分布產生的數值進行一定的轉化,可以讓飛濺運動的物體的初速度 95% 的概率在我們的速度範圍內。有小概率會超出範圍,這樣效果看起來就更自然了些。

const random_a = Math.random();const random_b = Math.random();
// box-muller 算法 r1 = sqrt(-2 * ln a) * sin(2*PI*b) r2 = sqrt(-2 * ln a) * cos(2*PI*b)const boxMuller_r = Math.sqrt(-2 * Math.log(random_a));const boxMuller_t = 2 * Math.PI * random_b;// 標準正態分布 N~(0,1) 68% 的概率 -1~1 95% 的概率 -2~2const random_normal_x = boxMuller_r * Math.cos(boxMuller_t);const random_normal_y = boxMuller_r * Math.sin(boxMuller_t);// random_normal ==除以4==> 95% 的概率 -0.5~0.5 ==加0.5==> 95% 的概率 0~1coin.initial_velocity.x = (random_normal_x / 4 + 0.5) * (V_X_MAX - V_X_MIN) + V_X_MIN;coin.initial_velocity.y = (random_normal_y / 4 + 0.5) * (V_Y_MAX - V_Y_MIN) + V_Y_MIN;

以上為白玉無冰使用 Cocos Creator v2.2.2 開發"物體隨機飛濺運動!"的技術分享。歡迎留言交流!如果這篇對你有點幫助,歡迎分享給身邊的朋友。

轉載請保留文末二維碼和完整代碼獲取方式!

完整項目:https://github.com/baiyuwubing/cocos-creator-examples/tree/master/splash



我就知道你「在看」▼

相關焦點

  • Cocos Creator 3D v1.0.1 正式發布
    [FIX] 修復 TS WebGL 對象類型提示[FIX] 修復微信插屏會縮小以及橫屏狀態下尺寸判斷錯誤的問題[FIX] 修復 RenderScene API 注釋筆誤[Sample] 新增完整遊戲[彈彈樂 3D]項目,後續會增加教程https://github.com/cocos-creator
  • Cocos Creator 3D Quternion !
    const s = Math.sin(rad);    out.x = s * axis.x;    out.y = s * axis.y;    out.z = s * axis.z;    out.w = Math.cos(rad);    return out;}本地坐標軸根據該物體本地坐標軸也能確定旋轉
  • Cocos Creator
    不清楚也沒關係,記得最後的公式就可以了,接下來進入 cocos creator 操作環節。既然是物理系統中的碰撞檢測,我們在編輯器裡添加的是物理系統中的碰撞器,而不是引擎的碰撞器,不要選錯了哦。不動的剛體類型設為 static添加完所有的物理碰撞器後如下所示。用到物理引擎自然要把物理引擎打開。
  • Cocos Creator 3D!
    接著,檢查這條射線穿過了那些物體,這些物體中可能就有我們點擊的對象。也可以這麼理解,你用眼睛看著一塊區域,伸出手指。你可以看到手指頭擋住了一點視線,從你的視線做經過手指這個點畫一條射線,這個射線穿過的物體,就剛好是你想要點擊的物體。講了大概原理(?),一起看看如何使用吧。既然是射線檢測,當然要先創建一個射線。
  • Cocos2d-x v3.3-RC0 發布說明! - OSCHINA - 中文開源技術交流社區
    Cocos2d-x v3.3-RC0下載地址:http://cn.cocos2d-x.org/download關於v3.3各個版本的特性和改動的話,可以參考這篇文檔。注意事項lua在新建工程時,引擎自帶的lua文件會被拷貝到src/cocos目錄下。這樣開發者可以更好地管理所有的所有的lua文件。
  • 運動物體做波形曲線運動
    這表明了牛頓運動定律存在缺陷。本論文通過研究宏觀天體的運動狀態、微觀粒子的運動狀態、地球上普通物體的運動狀態,論證得出新的牛頓運動定律,一切運動的物體在不受外力時,都是做波形曲線運動。1宇宙中天體的運動軌道1.1 地球公轉的運動軌道眾所周知,地球公轉的運動軌道是一個橢圓,太陽位於橢圓的一個焦點上。
  • 力與運動的關係,力並不是維持物體運動的原因
    如果將右邊的斜面水平放置,由於鋼珠無法達到原先的高度,鋼珠將永遠運動下去。通過這個實驗,伽利略認為力並不是維持物體運動的原因。笛卡爾後來也得出了相同的結果,並做出了補充,認為如果在沒有外力的作用下,物體不僅會永遠運動下去,而且還會以同一速度沿直線運動。
  • 運動的物體質量增加,從而使得物體無法達到光速?
    導讀:運動的物體質量增加,從而使得物體無法達到光速?以下3個回答,讓你深刻理解這個問題。1、之前的幾期文章中,我們多次談到三個效應,運動物體的「長度收縮」、「時間膨脹」、「質量變大」。其中前面2個我們都已經量化的給出了公式,並舉例計算出了效應的具體數值,今天我們來質量變大如何計算。
  • 運動的物體質量增加,從而使得物體無法達到光速?
    你坐著鋼管一起運動,屬於第二種效應。鋼管以1/2c速度運動,你坐在一輛列車也和鋼管一起以1/2c速度運動,這屬於第三種等效。這三種參考系,你測量出的鋼管都是1kg。那麼到底運動物體質量會變多大?下面給出質量增加公式:其中m0是本徵質量(不了解本徵概念,建議看看往期的內容),m就是物體運動後地面人看物體的質量,v是物體相對於地面運動速度。
  • 兩個物體的平拋運動 題目分析
    兩個物體的平拋運動一般是兩個物體分別運動,兩物體間有一定的聯繫,時間,位移,速度,角度等等。第一題  兩個物體的平拋運動01水平追及第二題兩個物體的平拋運動02反向運動不等時第三題兩個物體的平拋運動03同向運動不等時不等速第四題兩個物體的平拋運動04空中相遇第五題兩個物體的平拋運動05空中相遇第六題兩個物體的平拋運動06同一點開始運動
  • 運動物體都存在地球自轉慣性
    凡是運動的物體都存在旋轉運動。這種旋轉運動與地球運動慣性密切關聯。我這個觀點可能會遭遇到很多學者反對。他們會說,我們每天到處行走,但是,我們並沒有發現自己在做什麼無意識下的旋轉運動,看不出與地球運動有什麼聯繫。實際上,不僅僅是運動中的人,還有動物,甚至包括汽車、火車在運動中都會做旋轉運動,只是表現得非常不明顯而已。
  • 手機拍照:怎麼拍攝高速運動的物體?
    手機的攝影性能越來越好,但是受限於體積控制和晶片的性能,手機拍攝高速運動的物體能力相對於專業相機來說還是有很大的差異的。儘管很多手機號稱連拍能力可以達到每秒10幾張,看起來非常的唬人,但是其連續對焦能力卻趕不上。
  • 中考物理知識點:物體的運動和力
    物體的運動和力  1.牛頓第一定律:一切物體在沒有受到外力作用的時候,總保持靜止狀態或勻速直線運動狀態。(牛頓第一定律是在經驗事實的基礎上,通過進一步的推理而概括出來的,因而不能用實驗來證明這一定律)。  2.慣性:物體保持運動狀態不變的性質叫慣性。牛頓第一定律也叫做慣性定律。
  • 哪些物理量是物體周圍空間運動產生的?
    統一場論【百度統一場論6版可以搜到】基本原理:宇宙是由物體和空間組成,其餘統統不存在,其餘都是我們觀察者對物體運動和空間本身運動的描述。統一場論基本假設:宇宙中任何物體【包括我們觀察者的身體】,周圍空間都以物體為中心、以柱狀螺旋式【柱狀螺旋式運動是旋轉運動和旋轉平面垂直方向的直線運動的合成,物體周圍空間的直線運動部分是光速】在向四周發散運動。物體靜止的時候,周圍空間的旋轉運動會相互抵消為零,這個如同磁場的高斯定理。一, 時間。
  • 液體的溫度梯度也能推動物體運動
    美國麻省理工學院(MIT)研究人員開發出一種新方法,能利用液體的溫度梯度來推動物體運動。他們還通過實驗首次演示了物體表面和周圍液體之間的溫差能產生推力運動——這種效應可以廣泛擴展到自然界,是一種很有潛力的未來技術。在自然界,這種機制會影響冰山在海面的漂浮,巖石在地下巖漿中的運動等。相關論文發表在本周出版的《物理評論快報》上。
  • 經驗| 淺談幾種主流的低飛濺雷射焊接技術
    汽車行業尤為需要大量使用雷射焊接技術對鍍鋅鋼板、銅和鋁等特定材料進行加工,消除飛濺的方式是犧牲光纖雷射器固有優勢,但這會降低加工效率。因此,需要了解飛濺的產生,從而尋求最大化消除飛濺影響的方法。 1 飛濺是如何形成的? 什麼是飛濺?
  • 雷射焊接無飛濺技術-TRUMPF
    目前世界主流雷射器廠家均提出了無飛濺或低飛濺焊接技術,並推出了新產品,本文小編帶大家了解一下TRUMPF的「Low-spatter welding —BrightLine」,本文涉及的雷射器主要是目前工廠普遍使用的TRUMPF碟片雷射器TRUDISK。
  • 外國小夥在活火山口上走鋼絲,熔巖飛濺,生命繫於一線!
    這可能是世界上最危險的極限運動了!從一座活火山冒著熔巖和毒氣的火山口上方穿過,不時有巖漿飛掠,生命繫於一線之間,要麼生,要麼死,沒有其它選擇。長大後他成了一名極限運動愛好者,專門從事高空走扁帶運動,這是起源於走鋼絲的一種運動,只是用26毫米寬,3毫米厚的軟尼龍帶代替了鋼絲,行走中極不穩定,比走鋼絲具有更大的挑戰性。舒爾茨經常在各國的名山大川走扁帶,挑戰極限,2014年,他曾在桂林陽朔兩山之間挑戰100米高空375米走扁帶,打破了此前305米的世界紀錄。
  • 飛濺剋星!Coherent相干ARM技術完美解決汽車齒輪焊接難題
    雖然光纖雷射器在齒輪焊接中已取得了實踐性的應用優勢,但一直存在著加工過程中產生大量飛濺的問題。 飛濺所造成的氣孔和空隙會顯著降低部件的機械強度,並產生鬆散的顆粒。而這些顆粒如果進入齒輪間隙的話,可能會導致動力系統的使用壽命縮短。同時動力系統部件焊接必須確保減小熱影響區域 (HAZ),以避免發生部件變形的情況。
  • 為什麼引力會使某些物體繞軌道運動而某些物體自由下落?
    圖解:牛頓最初的思想實驗描述了自由落體和軌道運動之間的相似之處。物體向側面移動得越快,它在空中停留的時間就越長。如果速度足夠快,那麼它根本不會下落。無論引力是將物體拉入軌道還是使其「掉落」取決於物體的運動方式。