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點即是當前片元著色器正在處理的片元位置。如果不應用任...