cocos2d 用MotionStreak给骨骼动画的刀加拖尾(刀光拖尾)
最近刚去公司工作,没有一点经验,真是苦逼,做一个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啊,不然画不到你想要的位置的,最后贴上我的图片吧!!
相关文章
- 10-06 stm32内置adc和外置adc的区别(stm32
- 10-06 vs2010莫名其妙无响应_调试时VS2010没有
- 10-06 RS232串口卡住(串口卡住)
- 10-06 2022年中国调味品行业发展趋势:健康概念成为消费
- 10-06 2022-2023年中国调味品行业:市场规模与消费
- 10-06 2022年中国调味品行业趋势:疫情推动行业分销渠道
- 10-06 对标大厂,微服务网关应该这样设计!
- 10-06 对标大厂,微服务网关应该这样设计!
- 10-06 摆脱恼人的 NullPointerExceptio
- 10-06 2.7k star,最强大的开源支付系统,马上就可
- 10-06 2.7k star,最强大的开源支付系统,马上就可
- 10-06 基于标签的时间跟踪工具 Traggo
- 10-06 面试官问我,try catch 应该放在 for
- 10-06 面试官问我try catch应该在for循环里面还
- 10-06 RocketMQ源码分析监控指标分析
- 10-06 《硬盘磁头修复》:让您的数据恢复如初! (硬盘磁头
- 10-06 教你如何在电脑店恢复丢失的U盘数据(电脑店U盘数据
- 10-06 如果手机上存储的数据被破坏了怎么办? (手机数据分
- 10-06 九月开学季新教师亮相班美丽句子(九月开学季美丽句子
- 10-06 UiPath 在 3B 轮 C 轮融资中获得 2.
- 最近发表