zoukankan      html  css  js  c++  java
  • Cocos2d-x学习笔记(九)之 摄像机类CCCamera

      所有节点都拥有一个摄像机类CCCamera。只有通过摄像机类,节点才会被渲染出来。当节点发生缩放旋转和位置变化的时候,都需要覆盖CCCamera 类,让这个节点通过CCCamera 类重新渲染。

      注意:CCNode 类里有些方法可以实现缩放、旋转和位置变化,当使用摄像机类实现这些的时候,那些方法就不能同时使用了。使用摄像机类也不可以同时使用世界坐标了。

      CCCamera 类的继承关系如下:

      CCCamera -->CCObject-->CCCopying。

      Cocos2D-x 中的CCCamera 类使用OpenGL 的gluLookAt 函数来设置位置。gluLookAt 函数有三组关于坐标的参数,其中“Eye”系列的x、y、z 坐标参数是视角的位置,而“Center”系列的x、y、z 坐标参数是所视目标的坐标位置,“Up”系列的x、y、z 坐标参数是摄像机方向的向量坐标。关于这三个参数,你可以理解为以“Eye”为起点,沿着“Up”方向,朝“Center”看。

      注意:这里需要说明的是,在三维效果中,使用CCCamera 类是可以的,但是如果你只需要一些二维特效的话,那么更推荐跟随类CCFollow。

      主要成员函数:

      init:初始化。

      restore:重置为初始位置。

      locate:使用OpenGL 的gluLookAt 函数来设置。

      setEyeXYZ:设置视角位置坐标。

      getEyeXYZ:获得视角位置坐标。

      setCenterXYZ:设置目标位置坐标。

      getCenterXYZ:获得目标位置坐标。

      setUpXYZ:设置摄像机方向坐标。

      getUpXYZ:获得摄像机方向坐标。

      

      CCCamera 类可以实现节点对象的缩放旋转:

     1 //声明精灵类对象实例
     2 CCNode *sprite;
     3 //声明摄像机类对象实例
     4 CCCamera *cam;
     5 //创建精灵类对象
     6 sprite = CCSprite::createWithSpriteFrameName("sprite.png");
     7 // 获得摄像机
     8 cam = sprite->getCamera();
     9 // 设置z 轴位置
    10 cam->setEyeXYZ(0, 0, 100);
  • 相关阅读:
    expect详解及自动登录脚本的实现
    NFS服务端+客户端配置
    交互式shell脚本对话框----whiptail指令
    自定制Centos7.3系统镜像(ISO)
    云原生简述
    Linux下修改MTU(最大传输单元)
    MySQL-5.7组提交(Group Commit)原理
    AWS putty终端ssh密钥登陆方法
    一个简单的从web页面获取数据插入数据库的小程序
    新建一个简单的Java web前后台交互小程序时报错:java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SqlServerDriver
  • 原文地址:https://www.cnblogs.com/atong/p/3274688.html
Copyright © 2011-2022 走看看