zoukankan      html  css  js  c++  java
  • 关于Cocos2d-x中节点和精灵的关系以及初始化

    1.每一个对象类都有一个自己public的一个create函数(等价于CREATE_FUNC),和init函数。

    2.create函数返回的是自身的类型,init函数是在ceate函数被调用的时候自动调用。

    3.如果是场景对象类的话,还要public一个 static cocos2d::Scene* createScene();的函数,返回值是Scene类型

    如果我们要呈现一个会动的人

    1.定义一个对象类,继承自Sprite

    3.在init函数中

     //执行父类方法

    Sprite::init(); 

    //设置精灵节点纹理图案,同时把图片的大小自动赋值给精灵节点的节点大小

    setTexture("s_1.png");  

    //设置精灵节点的整体缩放

    setScale(0.2); 

    //设置精灵节点的物理刚体,以精灵节点的节点大小为刚体大小

    setPhysicsBody(PhysicsBody::createBox(this->getContentSize()));  

    //执行动画

    Animation * animation = Animation::create();
    animation->addSpriteFrameWithFile("s_1.png");
    animation->addSpriteFrameWithFile("s_2.png");
    animation->addSpriteFrameWithFile("s_3.png");
    animation->addSpriteFrameWithFile("s_4.png");
    animation->addSpriteFrameWithFile("s_5.png");
    animation->addSpriteFrameWithFile("s_6.png");
    animation->setDelayPerUnit(0.1f);
    animation->setRestoreOriginalFrame(true);
    //设置动画型的动作
    auto animate = Animate::create(animation);
    this->runAction(RepeatForever::create(animate));

    //设置刚体属性

    getPhysicsBody()->setRotationEnable(false);  //刚体在运动碰撞过程中不旋转

    getPhysicsBody()->setContactTestBitmask(1);  //刚体参与碰撞检测

    getPhysicsBody()->getShape(0)->setFriction(0);  //刚体表面摩擦系数为0,无摩擦力

    getPhysicsBody()->getShape(0)->setRestitution(0);  //刚体表面弹性系数为0,不弹起来


    return true;

    4.当我们创建一个节点的时候,调用初始化方法,返回了一个包含执行着精灵动画的精灵子节点,这就达到了我们想要的效果,我们可以对精灵节点进行各种操作,设置位置等等。

    注意:

    当一个节点中包含子节点时,如果对父节点进行操作,子节点也会跟着受影响。

  • 相关阅读:
    USACO 2021 US Open
    【UR #20】跳蚤电话
    省选前的做题记录
    PE444
    杂题
    CF1190E
    gym100299E
    杂题
    2021 5 10 团队博客
    2021 5 9 团队博客
  • 原文地址:https://www.cnblogs.com/HangZhe/p/5721129.html
Copyright © 2011-2022 走看看