在游戏开发中,有时会须要在某个游戏对象上的运动轨迹上实现渐隐效果。比方子弹的运动轨迹,假设不借助引擎的帮助,这样的效果则须要通过大量的图片来实现。而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. CSS3------background-size(背景图片尺寸属性)

    background-size 可以设置背景图片的大小,数值包括 长度length和百分比percentage. 并且会根据背景原点位置 background-origin 设置其图片覆盖的范围.那么 ...

  2. share my tools With Xcode

    1.让Xcode的控制台支持LLDB类型的打印 在Xcode断点调试的时候, 在控制台输入 po self.view.frame 或者 po id 类型的时候就死翘翘了. 进入正题: 安装LLDB调试 ...

  3. Pentaho Data Integration Step: BD Procedure Call

    官网连接:http://wiki.pentaho.com/display/EAI/Call+DB+Procedure 描述 调用数据库存储过程步骤允许用户执行一个数据库存储过程,并且得到结果.存储过程 ...

  4. JNI/NDK开发指南(二)——JVM查找java native方法的规则

    通过第一篇文章,大家明白了调用native方法之前,首先要调用System.loadLibrary接口加载一个实现了native方法的动态库才能正常访问,否则就会抛出java.lang.Unsatis ...

  5. Codeforces Round #197 (Div. 2) : B

    也是水题一个,不过稍微要细心点.... 贴代码: #include<iostream> using namespace std; long long n,m; ; int main() { ...

  6. 李洪强漫谈iOS开发[C语言-031]-逻辑短路

  7. linux使用ps1设置命令行提示符

    要自定义命令行提示,需要ps1来设置.完成自定义需要以下几个步骤: 1.编辑~/.bashrc文件 vi ~/.bashrc 2.在.bashrc文件中添加以下一行自定义内容 export PS1=& ...

  8. [转贴]JAVA:RESTLET开发实例(三)基于spring的REST服务

    前面两篇文章,我们介绍了基于JAX-RS的REST服务以及Application的Rest服务.这里将介绍restlet如何整合spring框架进行开发.Spring 是一个开源框架,是为了解决企业应 ...

  9. Best Practices for Using Alpha

    Alpha是图形界面开发中常用的特效,通常我们会使用以下代码来实现Alpha特效: view.setAlpha(0.5f); View.ALPHA.set(view, 0.5f); ObjectAni ...

  10. just so you're clear

    The Google Resume的第一句话是: Just so you're clear: it was not my idea to give a talk to Microsoft Resear ...