cocos2dx之如何实现视差效果

                            cocos2dx之实现视差效果

 

      大家好,我是Lampard

      今天与大家探讨一下简单的实现视差效果

 

     首先什么是视差效果?

      视差效果是游戏中非常流行的一种效果,在视差效果中,前景的速度移动得比较快,后景的视差移动得比较慢从而造成立体感和运动错觉。什么?没听懂?简单来说就是根据相对速度的不一样从而产生一种在向前奔跑冲刺的感觉。

     比如说我们的英雄没有运动,但是我们的背景图却以一定的速度往后运动,那么整个视觉看起来是不是就是有一种英雄在向前跑动的感觉?跑酷类游戏就是这样写出来的。

      

 

    具体的代码实现

    既然已经知道了视差效果是根据相对速度的不一样,但是假如是跑酷类游戏,背景图片跑得比精灵快我们难道需要准备一张特别长得背景图片吗?

    答案是不需要的,我们只需要准备两张图片,其中第一张的尾部和第二张的首部相接,第二张的尾部和第一张的首部相接,那么就可以实现背景图的循环播放了(当然,如果有多张图的话那么背景的重复率就会降低,观感会更好)

   

class ParallaxSprite : public Node

{

   CGSize _winSize;                         //  屏幕的大小

   CGPoint _center;                         // 中心点的位置

   CCSprite *_sprite1,*_sprite2;            // 两张背景图精灵

   float _speed;                            // 每帧移动的像素大小

   void initMap();                 // 填充这个背景结点

   void update();                           // 调用update函数每一帧进行移动

}

   前面的就不说了,init函数就是把这个结点进行填充,设置好相关的参数,创建好两个背景图精灵等工作,注意两个背景精灵x坐标间隔一个屏幕宽度。

   我们着重讲一下update方法:

(2)

首先我们是每帧以速度参数speed把背景图往后移动,然后进行背景图是否已经移动到屏幕外的判断,若是的话,把已经往左边移出屏幕的精灵,位置设回到现在在屏幕展示的背景精灵的右边,以便继续往左移的时候可以循环播放。若不是就正常移动。

 

至此我们的视差效果已经构造完成,谢谢大家!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lampard杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值