2D實現背景圖3D滾動效果(透視) !Cocos Creator !

2D實現背景圖3D滾動效果(透視) !Cocos Creator !

戰鬥地面效果!在 2D 中實現有縱深感(透視)的捲動效果。

效果

回顧

這次的紋理管理仍然是使用 Sprite 組件的渲染模式 Mesh ,需要的可以參考 初探精靈中的網格渲染模式 !

原理

爲了達到這種透視效果,把握一個原則,遠小近大,遠慢近快。

準備一張梯形的圖片,讓下面的圖形快速移動,上面的圖形慢速移動,就能有3D滾動的感覺了。

Sprite 組件的渲染模式 Mesh 的座標軸是左上角,位置座標 xy 範圍是圖片大小,紋理座標 uv 範圍是 0-1

對於正中間的頂點數據,如下圖所示。

代碼如下。

this.sp.spriteFrame['vertices'] = {
    x: [480,    1440,   1440,   480],
    y: [0,      0,      480,    480],
    nu: [0.35,  0.65,   0.65,   0.35],
    nv: [0,     0,      1,      1],
    triangles: [0, 1, 2, 2, 3, 0],
}

那麼怎麼確定移動後的某個位置的紋理座標 u 呢?

只要確定最左邊的兩個點的變化範圍,按百分比算出位置。

右邊的點根據左邊的頂點和長度就可以求出來了。

代碼如下。

// percent 0-1
const vertices = this.sp.spriteFrame['vertices'];
const nu = vertices.nu;
nu[0] = 0.25 + 0.2 * percent;
nu[1] = nu[0] + 0.3;
nu[3] = percent * 0.7;
nu[2] = nu[3] + 0.3;

參考書籍 《遊戲開發的數學和物理》

更多

█ shader頂點動畫之旗子水紋 █ █ 物理挖洞(整理+分塊) █ █ 漸變色的實現 █ █ 畫線紋理之繩子 █ █ 精靈之網格模式 █ █ shader動畫之loading █ █ js的三位一體 █ █ shader 之攻擊閃白(+入門資料整理) █ █ 物理流體(歡樂水杯) █ █ 瞄準線之拋物線 █ █ 隨機(正態分佈)飛濺運動 █ █ 貪喫蛇之平滑移動 █ █ 雷達圖的實現 █ █ 分形着色器(數學之美) █ █ shader 之漸變過渡 █ █ 初探 gizmo 使用 █ █ shader 之卷積濾鏡 █ █ 旗幟效果(meshRenderer) █ █ 多邊形裁剪(meshRenderer) █ █ 高拋平拋發射 █ █ 水紋效果(片元着色器) █ █ 2019年原創(黑歷史) █ █ 原創文章導航 █

小結

近大遠小,近快遠慢!

以上爲白玉無冰使用 Cocos Creator v2.3.3 實現 " 用2D實現背景圖3D滾動效果" 的技術分享。如果對你有點幫助,歡迎分享給身邊的朋友。

每人每天能夠專注地、富有成效地工作的時間是有上限的。你的時間只有這麼多,要怎麼利用你自己說了算。


原文鏈接
完整代碼(見readme)
原創文章導航

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章