zoukankan      html  css  js  c++  java
  • Cocos2dx 3.0 过渡篇(三十)灰机还是3D好(Sprite3D)

    如今都非常少发3.0过渡篇这一系列的博文了,原因是多方面的,一个是游戏开发进度,尽管上面并没给我什么压力,但我自己一直在赶。还有一方面是个人私生活这块。五月份确实是多事之秋,有时候真的没办法全心思去研究新东西。
    有的人肯定会说:那你怎么有时间写《玩转微信...》的博客。

    我的回答是理性的:要你管?!
    开个玩笑,事实上我对微信公众平台的开发研究不深,写那些也都比較简单, 不用花太多心思(最多耍耍嘴皮子)。更何况还能够将自己之前的学习心得记录下来。免得再过段时间都忘光光~~。



    --------
    回归正题,Cocos2d-x v3.1 RC0 在今天上午公布,不得不感慨cocos2dx版本号公布之快,假设能够吐槽的话。我仅仅想说:...呵呵...(有人跟我说呵呵表示冷笑的意思

    将最新版本号下载下来后。首先要做的肯定是在cmd下初始化下setup.py这些碗糕(为什么我有一种每周都在和setup.py打交道的错觉?),只是这次不用再又一次设置NDK。SDK。ANT的路径。它都帮你找好了。

    也不知道这个功能是3.0rc0就有了还是这个版本号才有的。反正记不清了。

    以下进入大家最期待的的打灰机环节。这里用到了Sprite3D这个较新的类,先来看下几个API

    /// 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);//由于图片比較小,所以这里的放大倍数要大点

    效果例如以下:



    当然了,既然是3D的,那肯定要来点动作特效吧?这里我认为用旋转的效果最好:
    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后才出来的,等有了解了再分享给大家吧。恩,只是使用方法还是比較easy理解的,看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);
    执行效果我就不截图了。大家自己试下就知道。

    假设不是要让灰机运动,而是直接给它设置一个旋转角度也一样是能够的,用以下这个API:
    virtual void setRotation3D(const Vec3& rotation);
    原理和RotateBy3D一样,使用例如以下:
    huiJi->setRotation3D(Vec3(90,0,0));
    让灰机以x方向为轴旋转90°,效果例如以下:

    怕大家误解,这里我在强调一下。RotateBy3D 不仅对Sprite3D创建出来的对象有效,对其它对象也一样有效。如Sprite等。


    好了,灰机这个话题我真的不能再继续下去了。

    就扯到这吧。

    尊重原创。转载请注明来源:

  • 相关阅读:
    spring cloud 和 阿里微服务spring cloud Alibaba
    为WPF中的ContentControl设置背景色
    java RSA 解密
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
    Hystrix 配置参数全解析
    spring cloud 2020 gateway 报错503
    Spring Boot 配置 Quartz 定时任务
    Mybatis 整合 ehcache缓存
    Springboot 整合阿里数据库连接池 druid
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5120734.html
Copyright © 2011-2022 走看看