在Cocos2D-x中,每个CCNode都拥有一个摄像机类CCCamera。只有通过CCCamera,CCNode才会被渲染出来。当CCNode发生缩放、旋转和位置变化时,都需要覆盖CCCamera,让CCNode能够通过CCCamera重新渲染。CCCamera的类继承关系图如下:

         查看一下CCCamera的内部结构和功能。
 
   ·CCCamera属性:
      float m_fEyeX:视角位置坐标x
      float m_fEyeY:视角位置坐标y
      float m_fEyeZ:视角位置坐标z
      float m_fCenterX:目标位置坐标x
      float m_fCenterY:目标位置坐标y
      float m_fCenterZ:目标位置坐标z
      float m_fUpX:摄像机方向坐标x
      float m_fUpY:摄像机方向坐标y
      float m_fUpZ:摄像机方向坐标z
 
   ·CCCamera方法:
      void init(void):初始化
      const char* description(void):返回当前摄像机的描述
      void restore(void):重置摄像机,使其回到默认位置
      void locate(void):按设置的视角位置放置摄像机
  
   从上面可以看出,CCCamera支持三维效果,也可以实现二维特效,如CCNode的缩放和旋转等。Cocos2D-x中的CCCamera使用OpenGL的gluLookAt函数来设置位置。gluLookAt函数有三组关于坐标的参数,其中m_fEye是指摄像机在世界坐标系中的位置,m_fCenter是指摄像机所观察的世界坐标系中的一个目标点,m_fUp是指3D世界中的上方向,通常设Y轴正方向为上方向。
-------------------------------------------------------------------------------------------------------------------

注:本人在本博客的原创文章采用创作共用版权协议http://creativecommons.org/licenses/by-nc-sa/2.5/cn/), 要求署名、非商业用途和保持一致。要求署名包含注明我的网名及文章来源(我的博客地址:http://www.cnblogs.com/binbingg)。

[原创]cocos2d-x研习录-第二阶 概念类之摄相机类(CCCamera)的更多相关文章

  1. [原创]cocos2d-x研习录-第二阶 概念类之精灵类(CCSprite)

    上一节说布景层CCLayer是小容器,那么精灵类CCSprite就是容器添加的内容,它是构成游戏的主要元素.精灵这个名称应该是游戏专用,它表示游戏中玩家操作的主角.敌人.NPC(Non Player ...

  2. [原创]cocos2d-x研习录-第二阶 概念类之节点类(CCNode)

    节点类CCNode在基本概念中并不存在,它是为了建立基本概念之间的关联关系而抽象出来的中间辅助类.这个类在Cocos2D-x中极为重要,它为概念类之间搭建了一座宏伟的桥梁.它的继承关系图如下:     ...

  3. [原创]cocos2d-x研习录-第二阶 概念类之场景类(CCScene)

    场景类CCScene是Cocos2D-x在屏幕显示的内容,相当于游戏关卡或界面.CCDirector任何时候只能显示一个场景CCScene,游戏中可能存在若干场景,CCDirector通过场景切换达到 ...

  4. [原创]cocos2d-x研习录-第二阶 概念类之导演类(CCDirector)

    CCDirector类是游戏的组织和控制中心(总指挥),它控制着主屏幕的显示.场景的切换和显示,以及游戏的开始.结束和暂停.它的继承关系图如下:    CCDirector继承自基类CCObject, ...

  5. [原创]cocos2d-x研习录-第二阶 概念类之布场层类(CCLayer)

    上面说场景CCScene相当于一个大容器,那么布景层类CCLayer就是大容器里的若干个小容器.每个游戏场景CCScene会有很多层CCLayer,每一层CCLayer负责各自的任务.看一下CCLay ...

  6. [原创]cocos2d-x研习录-第二阶 基本概念

    在Cocos2D-x引擎中,有几个非常重要的概念:导演(CCDirector).摄像机(CCCamera).场景(CCSecen).布景(CCLayer).精灵(CCSPrite)和动作(CCActi ...

  7. [原创]cocos2d-x研习录-第二阶 基本框架

    了解完Cocos2D-x的基本概念和概念类之后,是不是有一种蠢蠢欲动的冲动,想要探究Cocos2D-x是如何完成这一切的.接着我将通过对Cocos2D-x自代的HelloCpp项目进行分析,初步了解C ...

  8. [原创]cocos2d-x研习录—前言

    我认为很多开发者面对层出不穷的新技术.新思想和新理念,最为之苦恼的是找不到行之有效的学习方法,对于知识的本质缺乏认识,虽阅读了大量教材,却无法将其融入自己的知识体系,并搭建自己的知识树.不可否认,教材 ...

  9. [原创]cocos2d-x研习录-第三阶 特性之物理引擎

    游戏物理引擎是指在游戏中涉及物理现象的逻辑处理,它用于模拟现实世界的各种物理规律(如赛车碰撞.子弹飞行.物体掉落等),让玩家能够在游戏中有真实的体验. Cocos2D-x中支持Box2D和Chipmu ...

随机推荐

  1. IE6/7常用的hack

    hack基础: IE6: _selector{property:value;} selector{property:value;property:value !important;} //IE6 不支 ...

  2. mysql 命令(一)

    1. 函数向日期添加指定的时间间隔 DATE_ADD(date,INTERVAL expr type)eg:DATE_ADD(CURDATE(),INTERVAL 1 MONTH) //在当前时间加一 ...

  3. 【转】Spring jar包详解

    转载自:http://www.cnblogs.com/yanjunwu/archive/2013/04/06/3001927.html org.springframework.aop ——Spring ...

  4. 用JDBC访问MySQL

    /* 在数据库中创建一个Employee的类 create table Employee( id int primary key, name varchar(20), age int); */ imp ...

  5. guava学习--集合1

    Lists: 其内部使用了静态工厂方法代替构造器,提供了许多用于List子类构造和操作的静态方法,我们简单的依次进行说明,如下: newArrayList():构造一个可变的.空的ArrayList实 ...

  6. JDE 增加合计列

  7. /etc/passwd和/etc/shadow

    这两个路径分别是用于存储密码和隐形密码 让我们先来观察它,在了解它 [root@oc3408554812 ~]# cat /etc/passwd |grep carltoncarlton    :   ...

  8. 循环报数 Java实现

    输入1个数字和多个字符,中间均以空格隔开.假设数字取值为m(范围1~9),后面字符个数为n.假设n个字符围成一圈,从第一个字母开始循环报数,当数到m以后,第m个字母就出列,直到这n个字母全部出列.最后 ...

  9. Java 设计模式泛谈&装饰者模式和单例模式

    设计模式(Design Pattern) 1.是一套被反复使用.多人知晓的,经过分类编目 的 代码设计经验总结.使用设计模式是为了可重用代码,让代码更容易维护以及扩展. 2.简单的讲:所谓模式就是得到 ...

  10. java计算组合数

    import java.util.Scanner; public class Zuheshu { //计算m阶乘    public static int Fun(int m){     int su ...