感谢点评与关注,欢迎转载与分享。
勤奋努力,持之以恒!
在游戏开发中,有时会需要在某个游戏对象上的运动轨迹上实现渐隐效果。比如子弹的运动轨迹,如果不借助引擎的帮助,这种效果则需要通过大量的图片来实现。而Cocos2D-x的拖动渐隐效果类CCMotionStreak就帮助我们实现这个效果。下面是子弹飞行火焰拖尾的效果实现。。
#include "HelloWorldScene.h"
#include "SimpleAudioEngine.h"
using namespace cocos2d;
using namespace CocosDenshion;
CCScene* HelloWorld::scene()
{
CCScene *scene = CCScene::create();
HelloWorld *layer = HelloWorld::create();
scene->addChild(layer);
return scene;
}
bool HelloWorld::init()
{
if ( !CCLayer::init() )
{
return false;
}
size = CCDirector::sharedDirector()->getWinSize();
CCLayerColor* background = CCLayerColor::create(ccc4(255, 200, 255, 255), size.width, size.height);
this->addChild(background);
//存储子弹节点
bulltArr = CCArray::create();
CC_SAFE_RETAIN(bulltArr);
//存储 CCMotionStreak
streakArr = CCArray::create();
CC_SAFE_RETAIN(streakArr);
scheduleUpdate();
return true;
}
void HelloWorld::update(float delta)
{
for (int i = 0; i < bulltArr->count(); i++) {
CCSprite* bullt = (CCSprite*)bulltArr->objectAtIndex(i);
bullt->setPositionY(bullt->getPositionY()+2);
CCMotionStreak* streak = (CCMotionStreak*)streakArr->objectAtIndex(i);
//每次调用setPosition函数重新设置对象位置时,“影子”将被创建并且慢慢渐隐 注:对于CCMotionStreak对象不可用getPosition()等方法。。
streak->setPosition(bullt->getPosition());
}
for (int i = 0; i < bulltArr->count(); i++) {
CCSprite* bullt = (CCSprite*)bulltArr->objectAtIndex(i);
//删除超出屏幕节点
if (bullt->getPositionY() >= size.height+bullt->getContentSize().height) {
this->removeChild(bullt);
bulltArr->removeObject(bullt);
CCSprite* streak = (CCSprite*)streakArr->objectAtIndex(i);
this->removeChild(streak);
streakArr->removeObject(streak);
break;
}
}
}
//拖尾效果类CCMotionStreak
//创建 子弹节点 和 CCMotionStreak对象
void HelloWorld::createBullt(CCPoint startPoint)
{
CCSprite* bullt = CCSprite::create("bullet3.png");
bullt->setPosition(startPoint);
this->addChild(bullt,2);
bulltArr->addObject(bullt);
//第一个参数是间隐的时间,第二个参数是间隐片断的大小,第三个参数是贴图的宽高,第四个参数是颜色值RGB,第五个参数是贴图的路径或者贴图对象
CCMotionStreak* streak = CCMotionStreak::create(0.8, 10, 10, ccRED, "bullet3.png");
streak->setPosition(startPoint);
this->addChild(streak,1);
streakArr->addObject(streak);
}
bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
createBullt(pTouch->getLocation());
return true;
}
void HelloWorld::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){}
void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){}
void HelloWorld::onEnter()
{
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, false);
CCLayer::onEnter();
}
void HelloWorld::onExit()
{
CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
CCLayer::onExit();
}
HelloWorld::~HelloWorld()
{
CC_SAFE_RELEASE(bulltArr);
CC_SAFE_RELEASE(streakArr);
}
分享到:
相关推荐
cocos2dx 模糊效果代码提供,尽情下载吧!
IOS开发中因为引入cocos2dx,导致代码审核不通过无法提交( Apple will stop accepting submissions of apps that use UIWebView APIs )。该问题的解决方案有两种:1)升级Cocos2dx的版本,在查看Cocoas官网及Cocoas...
cocos2d-x 3.x 实现类似水果忍者的刀光拖尾效果
使用 cocos2dx 的 drawnode 绘制水波浪效果代码,在游戏开发中需要用到,网上找了很久没有找到,自己写了一个,drawnode 绘制节点绘制,用到了 sin ,封装了一个水浪效果层, 但用一个小问题就是边缘有点锯齿....
基于cocos2dx3.2的ScrollView改良版,paging分页部分是参考网上已有的源代码并进行改良,修复bug, indicator指示器部分是自己研发。 测试环境:mac os x (Windows平台 应该可行,需要你自己添加PagedScrollView到...
cocos2dx scrollview优化
cocos2dx 发光武器、子弹特效源码,商业源码必学技巧,xcode 工程,可自己加android或win32工程。
Cocos Creator 3.x 拖尾效果
使用cocos2dx2.2.2游戏引擎,让游戏背景循环滚动。让滚动界面无缝连接起来
cocos2dx中使用精灵的例子,新手可参考。
使用cocos2dx-2.2.1写的一款简单的射击类游戏。 比上次《cocos2dx-2.2.1射击类游戏》新增了开场动画和菜单功能,还有得分记录功能。界面有点简陋。随便找了一些图片放上去的。
其中配置包括了cocos2dx 2.0.4和cocos2dx2.1.3在lua中所有函数,类,类的成员变量和方法以及相关枚举定义 使用方法: 1.打开本目录下LuaKeywords.config,将里面内容复制到LuaStudio的自定义函数配置中 2.拷贝cocos...
我所理解的cocos2dx pdf
此代码在cocos2dx2.1.4下面编译有部分错误,我修改后,正常。 下下来后,请在VC++包含目录中链接(F:\cocos2d-x-2.1.4\cocos2dx\platform\win32;F:\cocos2d-x-2.1.4\cocos2dx\platform\third_party\win32\OGLES\GL\;...
cocos2dx斗地主服务端,客户端在我的资源列表中
cocos2dx可用3d粒子编辑器,支持pc、mac、iphone、android等平台
使用cocos2dx新建的helloword工程,嵌入到android原生项目中的demo
cocos2dx 的 数字滚动特效源码 ,xcode 环境编译
cocos2dx学习代码,小游戏黄金矿工,值得学习.重要事情说三遍