cocos2d-x-3.2 OrbitCamera使用

转自:http://blog.csdn.net/notbaron/article/details/38447253
理论介绍

     首先我们来看下Orbit是什意思,orbit['ɔ:bɪt][美][ˈɔrbɪt]表示 轨道; 势力范围。  

然后我们来看下继承关系,如下图
这里写图片描述

这个OrbitCamera类是ActionCamera类的唯一孩子。

我们看一下这个类的create函数如下:

static OrbitCamera* create

(float t, float radius, float deltaRadius, float angleZ, float deltaAngleZ, float angleX, float deltaAngleX)

这个函数创建一个带有起始半径、半径差、起始z角、旋转z角的差、起始x角、旋转x角的差这些参数的运动视角动作类

具体步骤

     我们还是在HelloWorld.cpp文件中找到

bool HelloWorld::init()函数,加入如下代码。

autoorbit1 =OrbitCamera::create(2,1,0, 0, 180, 0, 0);

auto action =Sequence::create( orbit1, orbit1->reverse(),nullptr);

auto grossini =Sprite::create("grossini.png");

addChild(grossini,0, 2);

grossini->setPosition(Vec2( 50+origin.x, visibleSize.height/2 + origin.y));    

grossini->runAction(action);

运行得到图片就不发了,因为截图看不出什么效果。小伙伴们可以自己在电脑里尝试之。

代码解释

     下面我们来解释下代码的含义:

      autoorbit1 =OrbitCamera::create(2,1,0, 0, 180, 0, 0);//创建一个动作对象,动作完成时间是2秒,起始半径为1、半径差为0、起始z角为0、旋转z角的差为180、起始x角0、旋转x角的差0


     auto grossini =Sprite::create("grossini.png");//创建一个动作,sequence表示里面的动作顺序执行。Orbit1->reverse()表示动作安装相反的方向运动。

     addChild(grossini,0, 2);//添加精灵

     grossini->setPosition(Vec2( 50+origin.x, visibleSize.height/2 + origin.y));//设置精灵位置

      grossini->runAction(action);//精灵运行



     该动作过程中,会将参数deltaAngleZ, deltaAngleX的角度转变成弧度(比如  deltaAngleZ参数为180,那么转换成弧度就是180*π/180=3.14)。

     目前我们这里可以简单的先这样理解,每个精灵都有一个摄像头。然后这个摄像头可以在精灵的外围运动。就像卫星围绕着地球一样旋转一样。当卫星绕这地球运动的时候,从卫星上看到的地球是不一样的,有时候是亚洲,有时候是非洲,而有时候就可能好是美洲了。

     起始半径就是卫星和地球的距离,而半径差是卫星和地球距离的变化可正可负。(不过蛤蟆实测发现好像没撒区别)

起始Z角及旋转Z角,我们目前可以理解成摄像机沿着球面的的水平方向旋转。

起始X角及旋转X角,可以理解成摄像机沿着球面的的垂直方向旋转。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值