cocos2d-X 节点(CCCamera.h.)API

这篇博客详细介绍了cocos2d-X中CCCamera.h文件的相关API,涵盖了节点操作的核心内容,适合cocos2d-x开发者参考学习。
摘要由CSDN通过智能技术生成

本文来自http://blog.csdn.net/runaying ,引用必须注明出处!

cocos2d-X 节点(CCCamera.h.)API

温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
///cocos2d-x-3.0alpha0/cocos2dx


#ifndef __COCOS2DX_CAMERA_H__
#define __COCOS2DX_CAMERA_H__

#include <string>

#include "cocoa/CCObject.h"
#include "ccMacros.h"
#include "kazmath/mat4.h"


NS_CC_BEGIN

/**
 * @addtogroup base_nodes
 * @{
 */

/** 
每个节点都使用了 Camera .
从不同的 camera(角度) 观察一个对象是非常有用的
camera 使用了 OpenGL gluLookAt() 函数

如果对象任意转换 scale(缩放), rotation(旋转、 position 位置属性, 那么它们需要覆盖 camera 

IMPORTANT: 你不能同时 camera 或者 rotation/scale/position 属性.
如果你同时使用了 camera 和rotation/scale/position那么 World coordinates就不会其作用

Limitations:

- 一些节点,你移动它们的 camera(视角) 将不会其作用; 例如 ParallaxNode, Particle (或者它们的祖先)
using the camera.

- 他对 SpriteBatchNode(批处理节点) 里面的 对象(Sprite) 不起作用

- 建议只在你创建 3D 效果的时候使用它。对于 2D 效果使用的 action 要遵循 position/scale/rotate.

*/
class CC_DLL Camera : public Object
{
public:
    /** returns 眼的 Z 轴坐标 */
    static float getZEye();
    /**
     * @js ctor
     */
    Camera(void);
    /**
     * @js NA
     * @lua NA
     */
    ~Camera(void);

    void init(void);
    /**
     * @js NA
     * @lua NA
     */
    const char* description(void) const;

    /** sets  dirty(是否正在修改视角) 的值 */
    inline void setDirty(bool bValue) { _dirty = bValue; }
    /** get dirty(是否正在修改视角) 的值 */
    inline bool isDirty(void) const { return _dirty; }

    /** sets camera 的默认位置 */
    void restore(void);
    /** Sets  camera 调用 gluLookAt 时 eye 所在的 center 、 up_vector */
    void locate(void);
    /** sets eye 的位置坐标 */
    void setEye(float fEyeX, float fEyeY, float fEyeZ);
    /**
     @过时不再需要建议使用新的 API,使用 setEye() 代替
     * @js NA
     * @lua NA
     */
    CC_DEPRECATED_ATTRIBUTE void setEyeXYZ(float fEyeX, float fEyeY, float fEyeZ){ setEye(fEyeX, fEyeY, fEyeZ);}
    /** sets 中心点所在的位置 */
    void setCenter(float fCenterX, float fCenterY, float fCenterZ);
    /**
     @过时不再需要建议使用新的 API 使用 setCenter() 代替
     * @js NA
     * @lua NA
     */
    CC_DEPRECATED_ATTRIBUTE void setCenterXYZ(float fCenterX, float fCenterY, float fCenterZ){ setCenter(fCenterX,fCenterY,fCenterZ);}
    /** sets 向上的 vector(向量) 值 */
    void setUp(float fUpX, float fUpY, float fUpZ);
    /**
     @过时不再需要建议使用新的 API 使用 setUp() 代替
     * @js NA
     * @lua NA
     */
    CC_DEPRECATED_ATTRIBUTE void setUpXYZ(float fUpX, float fUpY, float fUpZ){ setUp(fUpX,fUpY,fUpZ); }

    /** get  eye 所在点的 vector(向量)值 
     * @code
     * 当这个参数在 js or lua 里面使用时,输入参数会改变
     * in js: var getEye()
     * in lua:local getEye()
     * @endcode
     */
    void getEye(float *pEyeX, float *pEyeY, float *pEyeZ) const;
    /**
     @过时不再需要建议使用新的 API 可以使用 getEye() 代替
     * @js NA
     * @lua NA
     */
    CC_DEPRECATED_ATTRIBUTE void getEyeXYZ(float *pEyeX, float *pEyeY, float *pEyeZ) const { getEye(pEyeX, pEyeY, pEyeZ); }
    /** get 中心点所在的位置
     * 当这个参数在 js or lua 里面使用时,输入参数会改变
     * in js: var getCenter()
     * in lua:local getCenter()
     */
    void getCenter(float *pCenterX, float *pCenterY, float *pCenterZ) const;
    /**
     @过时不再需要建议使用新的 API 可以使用 getCenter() 代替
     * @js NA
     * @lua NA
     */
    CC_DEPRECATED_ATTRIBUTE void getCenterXYZ(float *pCenterX, float *pCenterY, float *pCenterZ) const{ getCenter(pCenterX,pCenterY,pCenterZ); }
    /** get 向上的 vector(向量) 值
     * 当这个参数在 js or lua 里面使用时,输入参数会改变
     * in js: var getUp()
     * in lua:local getUp()
     */
    void getUp(float *pUpX, float *pUpY, float *pUpZ) const;
    /**
     @过时不再需要建议使用新的 API 建议使用 getUp() 代替
     * @js NA
     * @lua NA
     */
    CC_DEPRECATED_ATTRIBUTE void getUpXYZ(float *pUpX, float *pUpY, float *pUpZ) const{ getUp(pUpX, pUpY, pUpZ); }

protected:
    float _eyeX;
    float _eyeY;
    float _eyeZ;

    float _centerX;
    float _centerY;
    float _centerZ;

    float _upX;
    float _upY;
    float _upZ;

    bool _dirty;
    kmMat4    _lookupMatrix;

private:
    DISALLOW_COPY_AND_ASSIGN(Camera);
};

// end of base_node group
/// @}

NS_CC_END

#endif // __COCOS2DX_CAMERA_H__


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值