在游戏开发中,有时会须要在某个游戏对象上的运动轨迹上实现渐隐效果。比方子弹的运动轨迹,假设不借助引擎的帮助,这样的效果则须要通过大量的图片来实现。而Cocos2D-x的拖动渐隐效果类CCMotionStreak就帮助我们实现这个效果。以下是子弹飞行火焰拖尾的效果实现。。

  1. #include "HelloWorldScene.h"
  2. #include "SimpleAudioEngine.h"
  3. using namespace cocos2d;
  4. using namespace CocosDenshion;
  5. CCScene* HelloWorld::scene()
  6. {
  7. CCScene *scene = CCScene::create();
  8. HelloWorld *layer = HelloWorld::create();
  9. scene->addChild(layer);
  10. return scene;
  11. }
  12. bool HelloWorld::init()
  13. {
  14. if ( !CCLayer::init() )
  15. {
  16. return false;
  17. }
  18. size = CCDirector::sharedDirector()->getWinSize();
  19. CCLayerColor* background = CCLayerColor::create(ccc4(255, 200, 255, 255), size.width, size.height);
  20. this->addChild(background);
  21. //存储子弹节点
  22. bulltArr = CCArray::create();
  23. CC_SAFE_RETAIN(bulltArr);
  24. //存储 CCMotionStreak
  25. streakArr = CCArray::create();
  26. CC_SAFE_RETAIN(streakArr);
  27. scheduleUpdate();
  28. return true;
  29. }
  30. void HelloWorld::update(float delta)
  31. {
  32. for (int i = 0; i < bulltArr->count(); i++) {
  33. CCSprite* bullt = (CCSprite*)bulltArr->objectAtIndex(i);
  34. bullt->setPositionY(bullt->getPositionY()+2);
  35. CCMotionStreak* streak = (CCMotionStreak*)streakArr->objectAtIndex(i);
  36. //每次调用setPosition函数又一次设置对象位置时,“影子”将被创建而且慢慢渐隐  注:对于CCMotionStreak对象不可用getPosition()等方法。。
  37. streak->setPosition(bullt->getPosition());
  38. }
  39. for (int i = 0; i < bulltArr->count(); i++) {
  40. CCSprite* bullt = (CCSprite*)bulltArr->objectAtIndex(i);
  41. //删除超出屏幕节点
  42. if (bullt->getPositionY() >= size.height+bullt->getContentSize().height) {
  43. this->removeChild(bullt);
  44. bulltArr->removeObject(bullt);
  45. CCSprite* streak = (CCSprite*)streakArr->objectAtIndex(i);
  46. this->removeChild(streak);
  47. streakArr->removeObject(streak);
  48. break;
  49. }
  50. }
  51. }
  52. //拖尾效果类CCMotionStreak
  53. //创建 子弹节点 和 CCMotionStreak对象
  54. void HelloWorld::createBullt(CCPoint startPoint)
  55. {
  56. CCSprite* bullt = CCSprite::create("bullet3.png");
  57. bullt->setPosition(startPoint);
  58. this->addChild(bullt,2);
  59. bulltArr->addObject(bullt);
  60. //第一个參数是间隐的时间,第二个參数是间隐片断的大小,第三个參数是贴图的宽高,第四个參数是颜色值RGB,第五个參数是贴图的路径或者贴图对象
  61. CCMotionStreak* streak = CCMotionStreak::create(0.8, 10, 10, ccRED, "bullet3.png");
  62. streak->setPosition(startPoint);
  63. this->addChild(streak,1);
  64. streakArr->addObject(streak);
  65. }
  66. bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
  67. {
  68. createBullt(pTouch->getLocation());
  69. return true;
  70. }
  71. void HelloWorld::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){}
  72. void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){}
  73. void HelloWorld::onEnter()
  74. {
  75. CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, false);
  76. CCLayer::onEnter();
  77. }
  78. void HelloWorld::onExit()
  79. {
  80. CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
  81. CCLayer::onExit();
  82. }
  83. HelloWorld::~HelloWorld()
  84. {
  85. CC_SAFE_RELEASE(bulltArr);
  86. CC_SAFE_RELEASE(streakArr);
  87. }


很多其它0

cocos2dx 以子弹飞行为例解说拖尾效果类CCMotionStreak的更多相关文章

  1. cocos2dx 子弹飞作为一个例子来解释解酒效果类CCMotionStreak

    感谢点评与关注,欢迎转载与分享. 勤奋努力,持之以恒! 在游戏开发中,有时会须要在某个游戏对象上的运动轨迹上实现渐隐效果.比方子弹的运动轨迹,假设不借助引擎的帮助.这样的效果则须要通过大量的图片来实现 ...

  2. cocos2d-x 2.0 拖尾效果分析

    转自:http://game.dapps.net/gamedev/game-engine/7281.html 在Cocos2d-x中,拖尾效果有一个专门的类CCMotionStreak来实现.下面我们 ...

  3. [Cocos2d-x For WP8]MotionStreak拖尾效果

    拖尾效果是指在在游戏中,一个精灵在运动的过程中会留下一个短暂的轨迹效果,在游戏里面如打斗的特效往往会需要用到这种效果来给运动的增加绚丽的效果.那么在Cocos2D-x里面我们可以使用一种内置的拖动渐隐 ...

  4. 【转】Cocos2d-x 2.0 拖尾效果深入分析

    Cocos2d-x 2.0 拖尾效果深入分析 另:本章所用Cocos2d-x版本为: cocos2d-2.0-x-2.0.2@ Aug 30 2012 http://cn.cocos2d-x.org/ ...

  5. [Unity3d]向量的过度方法以及拖尾效果

    Vector3.RotateTowards() 用法 public static function RotateTowards(current: Vector3, target: Vector3, m ...

  6. 浅谈canvas中的拖尾效果

    引言 很早就想了解以下 canvas 中的拖尾效果(如彗星,烟花等效果)是怎么实现的,但是一直没有深入了解,正巧在 codepen 上看到一个 demo,代码简单,效果炫酷,故有此文. 什么黑科技 在 ...

  7. Cocos Creator 的实现拖尾效果

    在游戏中,有时会需要在某个游戏对象上加上移动后的轨迹若隐若现的效果.使得游戏的效果较好,比如游戏大招,刀光,法术,流星划痕之类. Cocos Creator提供了一种内置的拖尾渐隐效果的实现方法:组件 ...

  8. Unity3D-飞机拖尾效果

    1.插件准备 unity3d官网,Assert Store搜索Cartoon_airplane 插件 2.拖尾效果实现 飞机显示 拖尾组件设计 在airplane_02下 右键 Effects-Tra ...

  9. Unity 武器拖尾效果

    Pocket RPG Weapon Trails 武器拖尾效果 Asset Store地址:https://www.assetstore.unity3d.com/en/#!/content/2458 ...

随机推荐

  1. asp.net管道模型

    查了很多资料,终于大概弄懂管道模型(注意并非指定是asp.net范畴)是个什么概念了,其实就是从Unix移植过来的一种概念,也可以说是一种模式吧(只允许一头读,一头写,并且读完了就会自动消失). as ...

  2. to disable the entity lazy load, The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.

    The ObjectContext instance has been disposed and can no longer be used for operations that require a ...

  3. Xcode报错 - 1

    1. xcode在真机调试的时候出现"The identity used to sign the executable is no longer valid" 解析: 是由于.pr ...

  4. sqrt和Hailstone

    求平方根 class SqRoot{ void calcRoot(double z){ double x=1;double y=z/x; while(Math.abs(x-y)>1E-10) { ...

  5. bzoj 1576: [Usaco2009 Jan]安全路经Travel 树链剖分

    1576: [Usaco2009 Jan]安全路经Travel Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 665  Solved: 227[Sub ...

  6. 关于ADMM的研究(二)

    关于ADMM的研究(二) 4. Consensus and Sharing 本节讲述的两个优化问题,是非常常见的优化问题,也非常重要,我认为是ADMM算法通往并行和分布式计算的一个途径:consens ...

  7. 【网络流24题】No. 17 运输问题 (费用流)

    [题意] W 公司有 m 个仓库和 n 个零售商店.第 i 个仓库有ai 个单位的货物:第 j 个零售商店需要b j 个单位的货物. 货物供需平衡,即SIGMA(A)=SIGMA(B). 从第 i 个 ...

  8. B*tree dump

    Oracle的索引是以平衡树的方式组织存储的:保存的是索引列的值,以及该行的rowid的一部分(文件号,块号,行号) 下面我们通过例子来了解一下: 1,create table test(id int ...

  9. WCF的配置文件中的要素

    Windows Communication Foundation Configuration Schema

  10. Http 状态码完整说明

    在网站建设的实际应用中,容易出现很多小小的失误,就像mysql当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规http状态码的表现也是一样, 一些常见的状态码为: 200 - 服务器成功返 ...