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

戰鬥地面效果!在 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;

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

小結

近大遠小,近快遠慢!

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

“在看”是最大的鼓勵▼

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