/// creates a Sprite3D,创建
static Sprite3D* create(const std::string &modelPath);
// creates a Sprite3D. It only supports one texture, and overrides the internal texture with 'texturePath'
static Sprite3D* create(const std::string &modelPath, const std::string &texturePath);
//set texture,设置纹理
void setTexture(const std::string& texFile);
void setTexture(Texture2D* texture);
这里的model是一个obj类型的文件,我也是第一次接触这货,总之它有和.png图片配合使用,原理应该类似于plist与png之间的基情关系。
下面开始创建一个3D灰机。我会告诉你灰机的资源是直接从Cocos2dx test的资源里拿的吗?
auto huiJi = Sprite3D::create("boss1.obj");
huiJi->setTexture("boss.png");
huiJi->setPosition(Point(350,350));
huiJi->setScale(20.f);//因为图片比较小,所以这里的放大倍数要大点
效果如下:
auto rep = RepeatForever::create(RotateBy::create(3,360));
huiJi->runAction(rep);//一直转啊转啊转
效果来了:
恩,为了营造一个文明,健康向上的博客氛围,以上灰机的相关介绍我就先说到这啦。
既然Sprite3D都出来了,那么RotateBy3D这货果断藏不住了!
当然了, 其实并没有RotateBy3D这个类,当前还是用RotateBy来实现3D旋转效果,API如下:static RotateBy* create(float duration, const Vec3& deltaAngle3D);
第一个参数就不用说了,旋转时间嘛。第二个参数的Vec3是什么?哈哈哈哈,我也不知道.......很明显这个也是3.0rc0后才出来的,等有了解了再分享给大家吧。恩,不过用法还是比较容易理解的,看Vec3里的参数如下:
Vec3(float xx, float yy, float zz)
这里的xx,yy,zz三个参数可以理解成三维坐标里的x,y,z。水平的那条就是x轴,竖直的是y轴,往里面的是z轴。所以如果Vec3的参数是这样的Vec3(360,0,0)则表示对象以x方向为轴旋转。实现如下:
auto actionBy1 = RotateBy::create(4, Vec3(360, 0, 0));
huiJi->runAction(actionBy1);
运行效果我就不截图了,大家自己试下就知道。
virtual void setRotation3D(const Vec3& rotation);
原理和RotateBy3D一样,使用如下:
huiJi->setRotation3D(Vec3(90,0,0));
让灰机以x方向为轴旋转90°,效果如下:
怕大家误解,这里我在强调一下,RotateBy3D 不仅对Sprite3D创建出来的对象有效,对其他对象也一样有效,如Sprite等。
好了,灰机这个话题我真的不能再继续下去了。就扯到这吧。
尊重原创,转载请注明来源: