制作了一个cocos2d-x下沿y轴旋转任意角度的精灵对象
发布时间:2020-12-14 21:35:28 所属栏目:百科 来源:网络整理
导读:闲来无事,想了想cocos2d-x下精灵对象好像不能沿y轴旋转,使用CCSprite的setSkewY函数想做成类似的旋转效果简直没法看,其实实现起来不难,就自己写了点小玩意,分享一下。 运行效果如上,右上是使用setSkewY的效果,另外两个是我自己实现的旋转效果(PS:
闲来无事,想了想cocos2d-x下精灵对象好像不能沿y轴旋转,使用CCSprite的setSkewY函数想做成类似的旋转效果简直没法看,其实实现起来不难,就自己写了点小玩意,分享一下。
运行效果如上,右上是使用setSkewY的效果,另外两个是我自己实现的旋转效果(PS: 贝璐丹迪好可爱) 话不多说,上代码: //cwSprite3D.h/////////////////////////////////////////////////////////////////////////////// #ifndef _cwSprite3D_h_ #define _cwSprite3D_h_ #include "cocos2d.h" using namespace cocos2d; class cwSprite3D : public CCSprite { public: protected: }; #endif //cwSprite3D.cpp////////////////////////////////////////////////////////////////////////////// #include "cwSprite3D.h" cwSprite3D* cwSprite3D::create(const char *pszFileName) { } //沿Y轴旋转degree角度 void cwSprite3D::rotateY(float degree) { } 代码很简单,在初始化的时候保存了顶点原始数据,目的是在计算旋转后坐标时,使用原始值计算变换后的坐标数据(float容易失真的,嘎嘎)。 rotateY函数就是绕Y轴旋转了,也很简单,创建了一个矩阵,然后乘以顶点,得到旋转后的新顶点,矩阵使用cocos2d-x自带的kazmath库(PS:一直以来对opengl下的列向量感觉是不太舒服,没数学天分-_-!) 代码中使用也很简单 /////HelloWorld::init()//////////////////////////////////////////////////////////////////// |