cocos2dx:CCOrbitCamera 实现精灵的球面翻转或类似翻书操作,以及翻转轨迹优化问题
设备/引擎:Mac(11.6)/cocos
开发工具:Xcode(13.0)
开发需求:CCOrbitCamera 实现精灵的球面翻转或类似翻书操作,以及翻转轨迹优化问题
今天要说的需求简单讲就是用cocos2d来实现3D翻转效果,有两种方法,一种就是通过ScaleX来实现翻转的效果,不过这个方法因为是对两个精灵进行=缩放操作,所以需要控制间隔时间,需要细调,耗费时间;另一个方法就是使用CCOrbitCamera函数来实现球面翻转效果。
1.ScaleX
原理很简单:翻转前的精灵ScaleX减小的同时,准备翻转的精灵ScaleX变大,控制好时间,视觉上就会有3D翻转的效果。
//需要显示的精灵设置初始的ScaleX
cardSprite->setScaleX(0.0);
//已经显示的精灵的动作
CCScaleTo* scale1 = CCScaleTo::create(0.3, 0, 1);
以上包含3个参数,分别为时间、scalex、scaley
//需要显示的精灵的动作
CCScaleTo* scale2 = CCScaleTo::create(0.3, 1, 1);
以上包含3个参数,分别为时间、scalex、scaley
点击精灵后,注意调用对应正确动作,实际效果需要自行测试调节,比较耗时。
2.CCOrbitCamera
代码如下:
CCOrbitCamera* orbit1 = CCOrbitCamera::create(0.5, 1, 0, 0, 180, 0, 0);
函数参数介绍介绍:时间、起始半径、半径差、起始Z角、旋转Z角角度、起始X角、旋转X角角度;
同样也是需要注意对应精灵调用正确的动作。
注:使用该函数一定要设置一下setDepthTest为false,原因在于使用网格之前需要取消OpenGL的深度检测,不设置的结果就是,旋转效果会有卡顿,看着只有一半,大家可以实际试一下代码如下
CCDirector::sharedDirector()->setDepthTest(false);//解决翻转轨迹问题
至此就是两个方法的主要代码及原理,具体细节还需要各位猿友实际进行操作调节。
希望能给大家带来帮助!!!有什么问题需要讨论的可以评论私信欢迎讨论~