cocos2d 用MotionStreak给骨骼动画的刀加拖尾(刀光拖尾)
2015-07-25 15:22
696 查看
最近刚去公司工作,没有一点经验,真是苦逼,做一个demo,当骨骼动画(刀这个骨骼砍得时候能够出现拖尾效果,真是想破脑袋),经过不断的尝试,总结出了一个方法:
直接上代码:
MotionStreak *streak = MotionStreak::create(1, 20, 35, ccc3(255, 255, 255), "yhmm_texiao.png");
streak->reset();
streak->setAnchorPoint(ccp(0.5,0.5));
创建拖尾,这个不用解释了吧!,接下最重要的是怎么获取骨骼动画呢?(对了前提是你要把骨骼动画加载到了你的层里面并且能显示出来,网上很多这方面的代码你们可以去看看),我只贴出部分,
//这个是将骨骼放到层中
ArmatureDataManager::getInstance()->addArmatureFileInfo("art/armature/ani_pack_hero.png", "art/armature/ani_pack_hero.plist", "
art/armature/hero_zhujue.ExportJson");
Armature *armature = Armature::create("hero_zhujue");
armature->setPosition(Point(winSize.width / 2, winSize.height / 2-49));
// 播放动画
armature->getAnimation()->playWithIndex(5);
//armature->setScale(0.6);
addChild(armature);
//下面这个很重要 了
Bone *bone=armature->getBone("Layer69");//你可以在hero_zhujue.ExportJson里面找到刀这个骨骼对应的名称,对了你最好是将hero_zhujue.ExportJson导入
cocostudio 里面去查看,这个是支持这样导入的
接下来就是怎么设置拖尾的位置了。
画拖尾呢?需要我们每一帧去更新它的位置,我们给他开个定时器
Vec2 pos3;//这个最好放在.h文件里面
scheduleUpdate();
//更新拖尾的位置
void LayerGameHero::update(float dt){
pos3.x = bone->getWorldInfo()->x;
pos3.y = bone->getWorldInfo()->y;
streak->setPosition(pos3 + armature->getPosition());
}//切记,这个是取世界坐标,不能取本地坐标,为什么呢?你可以试试,用getPostion(),不管你怎么弄坐标都是0啊,不过你可以转换为本地坐标也是可以的,还有个很重要,要加上armature->getPosition(),这个动画的Postion啊,不然画不到你想要的位置的,最后贴上我的图片吧!!
直接上代码:
MotionStreak *streak = MotionStreak::create(1, 20, 35, ccc3(255, 255, 255), "yhmm_texiao.png");
streak->reset();
streak->setAnchorPoint(ccp(0.5,0.5));
创建拖尾,这个不用解释了吧!,接下最重要的是怎么获取骨骼动画呢?(对了前提是你要把骨骼动画加载到了你的层里面并且能显示出来,网上很多这方面的代码你们可以去看看),我只贴出部分,
//这个是将骨骼放到层中
ArmatureDataManager::getInstance()->addArmatureFileInfo("art/armature/ani_pack_hero.png", "art/armature/ani_pack_hero.plist", "
art/armature/hero_zhujue.ExportJson");
Armature *armature = Armature::create("hero_zhujue");
armature->setPosition(Point(winSize.width / 2, winSize.height / 2-49));
// 播放动画
armature->getAnimation()->playWithIndex(5);
//armature->setScale(0.6);
addChild(armature);
//下面这个很重要 了
Bone *bone=armature->getBone("Layer69");//你可以在hero_zhujue.ExportJson里面找到刀这个骨骼对应的名称,对了你最好是将hero_zhujue.ExportJson导入
cocostudio 里面去查看,这个是支持这样导入的
接下来就是怎么设置拖尾的位置了。
画拖尾呢?需要我们每一帧去更新它的位置,我们给他开个定时器
Vec2 pos3;//这个最好放在.h文件里面
scheduleUpdate();
//更新拖尾的位置
void LayerGameHero::update(float dt){
pos3.x = bone->getWorldInfo()->x;
pos3.y = bone->getWorldInfo()->y;
streak->setPosition(pos3 + armature->getPosition());
}//切记,这个是取世界坐标,不能取本地坐标,为什么呢?你可以试试,用getPostion(),不管你怎么弄坐标都是0啊,不过你可以转换为本地坐标也是可以的,还有个很重要,要加上armature->getPosition(),这个动画的Postion啊,不然画不到你想要的位置的,最后贴上我的图片吧!!
相关文章推荐
- Cocos2d-x中背景音乐和音效使用实例
- Cocos2d-x学习笔记之CCScene、CCLayer、CCSprite的默认坐标和默认锚点实验
- Cocos2d-x UI开发之CCControlPotentiometer控件类使用实例
- Cocos2d-x UI开发之文本类使用实例
- Cocos2d-x保存用户游戏数据之XML文件是否存在问题判断方法
- Cocos2d-x UI开发之菜单类使用实例
- Cocos2d-x UI开发之CCControlButton控件类实例
- Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系
- Cocos2d-x UI开发之CCControlColourPicker控件类使用实例
- Cocos2d-x学习笔记之CCLayerColor层的使用实例
- Cocos2d-x Schedule定时器的使用实例
- Cocos2d-x中使用CCScrollView来实现关卡选择实例
- Cocos2d-x中CCEditBox文本输入框的使用实例
- cocos2d-x学习笔记之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex场景层介绍
- Cocos2d-x UI开发之CCControlSlider控件类使用实例
- Cocos2d-x学习笔记之开发环境搭建
- Cocos2d-x学习笔记之Hello World!
- Cocos2d-x的内存管理总结
- Cocos2d-x 3.0中集成社交分享ShareSDK的详细步骤和常见问题解决
- Cocos2d-x入门教程(详细的实例和讲解)