• cocos2dx:CCOrbitCamera 实现精灵的球面翻转或类似翻书操作,以及翻转轨迹优化问题


    cocos2dx:CCOrbitCamera 实现精灵的球面翻转或类似翻书操作,以及翻转轨迹优化问题

    设备/引擎:Mac(11.6)/cocos

    开发工具:Xcode(13.0)

    开发需求:CCOrbitCamera 实现精灵的球面翻转或类似翻书操作,以及翻转轨迹优化问题

    今天要说的需求简单讲就是用cocos2d来实现3D翻转效果,有两种方法,一种就是通过ScaleX来实现翻转的效果,不过这个方法因为是对两个精灵进行=缩放操作,所以需要控制间隔时间,需要细调,耗费时间;另一个方法就是使用CCOrbitCamera函数来实现球面翻转效果。

    1.ScaleX
    原理很简单:翻转前的精灵ScaleX减小的同时,准备翻转的精灵ScaleX变大,控制好时间,视觉上就会有3D翻转的效果。

    //需要显示的精灵设置初始的ScaleX
    cardSprite->setScaleX(0.0);
    
    • 1
    • 2
    //已经显示的精灵的动作
    CCScaleTo* scale1 = CCScaleTo::create(0.3, 0, 1);
    
    • 1
    • 2

    以上包含3个参数,分别为时间、scalex、scaley

    //需要显示的精灵的动作
    CCScaleTo* scale2 = CCScaleTo::create(0.3, 1, 1);
    
    • 1
    • 2

    以上包含3个参数,分别为时间、scalex、scaley

    点击精灵后,注意调用对应正确动作,实际效果需要自行测试调节,比较耗时。

    2.CCOrbitCamera
    代码如下:

    CCOrbitCamera* orbit1 = CCOrbitCamera::create(0.5, 1, 0, 0, 180, 0, 0);
    
    • 1

    函数参数介绍介绍:时间、起始半径、半径差、起始Z角、旋转Z角角度、起始X角、旋转X角角度;

    同样也是需要注意对应精灵调用正确的动作。

    注:使用该函数一定要设置一下setDepthTest为false,原因在于使用网格之前需要取消OpenGL的深度检测,不设置的结果就是,旋转效果会有卡顿,看着只有一半,大家可以实际试一下代码如下

    CCDirector::sharedDirector()->setDepthTest(false);//解决翻转轨迹问题
    
    • 1

    至此就是两个方法的主要代码及原理,具体细节还需要各位猿友实际进行操作调节。

    希望能给大家带来帮助!!!有什么问题需要讨论的可以评论私信欢迎讨论~

  • 相关阅读:
    产品研发流程
    Houdini 地形知识点
    搞懂Python正则表达式,这一篇就够了
    初始多线程
    国内ITSM发展的趋势
    计算机网络 | 网络层(控制平面)
    05.Django配置
    js函数作用域
    年客刷题:数组排序
    网安学习-应急响应2
  • 原文地址:https://blog.csdn.net/weixin_44309889/article/details/127686412