关于Cocos2d-x中节点和精灵的关系以及初始化

本文介绍如何使用 Cocos2d-x 创建一个移动并播放动画的角色。通过继承 Sprite 类并利用 init 函数设置纹理、动画及物理属性,最终实现角色动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

注意:

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

 

转载于:https://www.cnblogs.com/HangZhe/p/5721129.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值