ParallaxNode視差節點

2021-07-02 13:26:58 字數 1465 閱讀 1923

void

addchild(cocos2d::node *child,

intz,

const

cocos2d::vec2 ¶llaxratio,

const

cocos2d::vec2 &positionoffset);

z:z軸順序

parallaxratio:視差的移動速率

positionoffset:子節點位置座標,該座標是相對父節點的,即parallaxnode

variable

/'veərɪəb(ə)l/

可變的

auto

front =

sprite

::create

("hole_stencil.png"

);auto

mid =

sprite

::create

("hole_effect.png"

);auto

background =

sprite

::create

("helloworld1.png"

);//

建立乙個視差節點

auto

voidnode =

parallaxnode

::create

();//

新增需要移動的子節點

voidnode->

addchild

(background,0,

vec2

(0.4f,0

),vec2

(240

,160

));voidnode->

addchild

(mid,1,

vec2

(2.2f,0

),vec2

(450

,100

));voidnode->

addchild

(front,2,

vec2

(3.0f,0

),vec2

(500

,160

));actioninterval

* go =

moveby

::create(4

,vec2

(-240,0

));actioninterval

* goback = go->

reverse

();auto

seq =

sequence

::create

(go,goback,

null

);voidnode->

runaction

(repeatforever

::create

(seq));

addchild

(voidnode);

其三個子節點由於設定的速率不同,移動快慢有乙個非常明顯的效果

視差滾動效果

確實,早期大部分視差滾動效果基本上就是如此,滾動事件是前提,然後要麼是直接改變位置,要麼如果是使用了背景,則改變背景的background position,不過實際上這種方法是存在缺陷的。監聽滾動事件,要想做到盡可能地流暢渲染效果,就不可以讓滾動事件 節流防抖動 throttle debounce...

滾動視差 01

先看一下示例展示第四屏的效果 思路 視差滾動到相應的容器時,讓背景固定不動,等滑到某個高度時恢復正常滾動,這裡是用兩張相同的做交替覆蓋,由於相同,因此看不出變化,從而達到一定的滾動視差效果,當然滾動視差效果有很多態別,這只是其中的一種方式,而且還沒有達到像示例展示那裡的效果,還需要對背景進行一定的優...

視差對映 Parallax Mapping

這種技術和法線貼圖結合使用,可以給物體表面增加驚人的細節,這邊只談實現上的注意點。首先是最簡單的一種,一般不會採用的那種,但用來理解最核心的思想是極好的。視差對映在實現時,通常採用的是深度圖而非高度圖,儲存的資訊是當前畫素凹下去的程度 如圖所示,a點即是當前片元著色器正在處理的片元位置。如果不應用任...