视差就是从有一定距离的两个点上观察同一个目标所产生的方向差异。从目标看两个点之间的夹角,叫做这两个点的视差角,两点之间的距离称作基线。只要知道视差角度和基线长度,就可以计算出目标和观测者之间的距离。游戏开发中利用视觉上的误差,即通常所说的视错觉。

如果我们的游戏中有地图的移动,就无法避免滚动视差。也就是说离实现越远的地方移动速度越慢,这样才可以形成景深不一样的视觉效果。

在Cocos2D-x里面我们可以使用CCParallaxNode类来实现这种视差的效果。CCParallaxNode可以很容易的建立一个视差层,你可以控制每一层的视差率、位置和层级的高低。主要会有下面的几个步骤:

1、创建CCParallaxNode用于存储各种精灵和背景图。
      CCParallaxNode* voidNode = CCParallaxNode::create();

2、向CCParallaxNode添加精灵通过addChild函数来添加,并且设置相对于CCParallaxNode的移动速度的比例。
     voidNode->addChild(cat, 1, ccp(3.0f,2.5f), ccp(200,800) );

比如cat精灵的移动速度的比例为 ccp(3.0f,2.5f),表示CCParallaxNode的X轴和Y轴分别移动一个点,则cat精灵分别移动3,2.5个点,这样在视觉的效果上就可以看到cat精灵的移动速度比较快。

3、创建 CCParallaxNode运动的动作,这样就可以看到在CCParallaxNode上的精灵的运动视差效果了。
 CCActionInterval* goUp = CCMoveBy::create(4, ccp(0,-500) );
 CCActionInterval* goDown = goUp->reverse();
 CCActionInterval* go = CCMoveBy::create(8, ccp(-1000,0) );
 CCActionInterval* goBack = go->reverse();
 CCFiniteTimeAction* seq = CCSequence::create(goUp, go, goDown, goBack, NULL);
 voidNode->runAction( (CCRepeatForever::create((CCActionInterval*) seq) ));

示例代码如下:

TestLayer::TestLayer()
{
// 创建cat精灵
CCSprite* cat = CCSprite::create("cat.png");
//change the transform anchor point to 0,0 (optional)
cat->setAnchorPoint( ccp(,) );
//创建 background 精灵最为背景
CCSprite* background = CCSprite::create("background.png");
// scale the image (optional)
background->setScale( 2.0f );
// change the transform anchor point (optional)
background->setAnchorPoint( ccp(,) ); // 创建一个parallax节点用于储存各种精灵,然后移动parallax节点以展示“视差”效果
CCParallaxNode* voidNode = CCParallaxNode::create();
// background的移动速度为 0.4x, 0.5y
voidNode->addChild(background, -, ccp(0.4f,0.5f), CCPointZero);
// cat的移动速度为 3.0x, 2.5y
voidNode->addChild(cat, , ccp(3.0f,2.5f), ccp(,) ); //移动 CCParallaxNode 产生视差效果
CCActionInterval* goUp = CCMoveBy::create(, ccp(,-) );
CCActionInterval* goDown = goUp->reverse();
CCActionInterval* go = CCMoveBy::create(, ccp(-,) );
CCActionInterval* goBack = go->reverse();
CCFiniteTimeAction* seq = CCSequence::create(goUp, go, goDown, goBack, NULL);
voidNode->runAction( (CCRepeatForever::create((CCActionInterval*) seq) )); addChild( voidNode );
}

运行的效果:

 

[Cocos2D-x For WP8]ParallaxNode视差的更多相关文章

  1. ParallaxNode视差节点实现远景近景的不同层次移动

    Cocos2d-x有ParallaxNode视差节点,视察顾名思义,就是造成不同的移动速率的效果. 我想大家都玩过刀塔传奇,他的背景有远景和近景之分,而且你滑动屏幕的时候远景和近景是按照不同的速率移动 ...

  2. Cocos2d-x游戏移植到WP8之路 -- c++和c#交互

    Cocos2d-x是眼下最流行的手机游戏引擎之中的一个,开源.轻量.多平台等的诸多特性使得它被非常多国内外手游开发人员所喜爱. 利用Cocos2d-x来开发Windows Phone 8的游戏相同也是 ...

  3. 【Cocos2d-x for WP8 学习整理】(4)CCTableView 实现《天天爱消除》中的得分榜

    接上回 CCScrollView 继续,在GUI 里还有个 CCScrollView 的子类---CCTableView . 这个名字应该是从 IOS 里的 UITableView来的,其实是跟WP8 ...

  4. [Cocos2D-x For WP8]CocosDenshion音频播放

    Cocos2D-x的音频分为长时间的背景音乐和短的音效两种,我们可以通过SimpleAudioEngine::sharedEngine()方法来获取音频播放的引擎,然后调用对音频相关的操作方法就可以了 ...

  5. [Cocos2D-x For WP8]Box2D物理引擎

    物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动.旋转和碰撞反映.为每个游戏使用物理引擎并不是完全必要的—简单的“牛顿”物理(比如加速和减速)也可以在一定程度上通过编程或编写脚本来实现.然而, ...

  6. 构建基于WinRT的WP8.1 App 03:Page控件

    单页面模板 通常利用Visual Studio 2013创建的最简单的WP8.1应用是Blank App,它只包含一个不带任何UI的页面,并且没有任何状态管理的逻辑. 该不带任何UI的页面称为Blan ...

  7. [Cocos2d-x For WP8]EaseActions缓动动作

    我们用Silverlight框架开发WP8的应用程序的时,编写动画可以使用缓动效果来实现缓动动画对吧,那么在Cocos2d-x框架里面我们一样是可以缓动动作(缓动动画),其实技术的东西都是想通的,如果 ...

  8. [Cocos2d-x For WP8]Hello world

    [Cocos2d-x For WP8]Hello world Cocos2d-x For WP8使用C++开发,使用cocos2d-xv0.13同样的接口,Cocos2d-x For WP8的相关项目 ...

  9. [Cocos2d-x for WP8学习笔记] HelloWorld结构分析

    先来看一下目录结构: Assets:游戏资源文件,图片音频等,Resource文件夹也有类似功能 include:用于放置游戏头文件 Shaders:渲染器着色器文件(大雾) cocos2dorig. ...

随机推荐

  1. 使用Modernizr探测HTML5/CSS3新特性(转载)

    转载地址:http://www.cnblogs.com/TomXu/archive/2011/11/18/detecting-html5-css3-features-using-modernizr.h ...

  2. Hadoop 苦旅(1)——准备以及Cygwin安装

    安装篇: 安装是最基本的,也是最难的.俗话说的好,万事开头难啊!的确如此.刚开始,自己折腾,总会是这样那样的问题,也许一个小的问题,就要推倒了重来.我现在就将这几天(2014-2-16~2014-2- ...

  3. PHP不同域名cookie共享(单点登录实现原理)

    PHP使用P3P完成COOKIE跨域操作实际实用中,类似的需求有,比如说我们有两个域名,我们想实现在一个域名登录后,能自动完成另一个域名的登录,也就是单点登录(SSO)功能.为了测试的方便,先编辑ho ...

  4. CentOS下Apache安装SSL

    https是一个安全的访问方式,数据在传输过程中是加密的.https基于ssl. 一.安装apache和ssl模块1.安装apacheyum install httpd2.安装ssl模块yum ins ...

  5. hdu 2516 FIB博弈

    分析请看:cxlove #include<iostream> #include<cstdio> #include<cstring> #include<algo ...

  6. 实时视频应用之QoS关键技术分析

    转自:http://www.aiweibang.com/m/detail/104476372.html?from=p 随着WebRTC标准的逐步推广,实时音视频通讯技术受到越来越多公司和技术人员的关注 ...

  7. PMP 第二章 项目生命周期与组织

    1 项目组织机构类型有哪些? 区别是什么? 职能型  矩阵型  项目性 2 什么是事业环境因素? 什么是组织过程资产? 如何区分事业环境因素和组织过程资产? 事业环境因素:事业环境因素指围绕项目或能影 ...

  8. 编译原理实习(应用预测分析法LL(1)实现语法分析)

    #include<iostream> #include<fstream> #include<iomanip> #include<cstdio> #inc ...

  9. 封装JavaScript的AJAX

    // 创建request对象 function createXMLHttpRequest() { try { return new XMLHttpRequest();//大多数浏览器 } catch ...

  10. 03 Javascript初识

    Javascript语言(★★★★★)      Javascript是基于对象和事件驱动的脚本语言,作用在客户端.              特点: * 交互性 * 安全性(不能访问本地的硬盘)   ...