在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_fEyeY:视角位置坐标y
float m_fEyeZ:视角位置坐标z
float m_fCenterX:目标位置坐标x
float m_fCenterY:目标位置坐标y
float m_fCenterZ:目标位置坐标z
float m_fCenterY:目标位置坐标y
float m_fCenterZ:目标位置坐标z
float m_fUpX:摄像机方向坐标x
float m_fUpY:摄像机方向坐标y
float m_fUpZ:摄像机方向坐标z
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)。