Cocos2d-x 水果忍者划痕效果

网上找的一个关于水果忍者划痕的,效果还算凑合。其原理就是基于OpenGL绘制直线,因为版本号过老,此处笔者改动了一些方法,粘贴后可直接使用

适用于Cocos2d-x 2.2.1

.h文件里须要添?的代码:

void draw();

void drawLine();

virtual void ccTouchesBegan(CCSet *pTouches,CCEvent *pEvent);

virtual void ccTouchesMoved(CCSet *pTouches,CCEvent *pEvent);

virtual void ccTouchesEnded(CCSet *pTouches,CCEvent *pEvent);

std::list<CCPoint> pointList;

.cpp文件里

void HelloWorld::draw()

{

drawLine();

}

void HelloWorld::drawLine()

{

int tickSubCount = 10;

int pointListKeepCount = 500;

for (int i=0; i<tickSubCount ; i++)

{

if (pointList.size() >0)

{

pointList.pop_front();

}

else

{

break;

}

}

while (pointList.size() > pointListKeepCount)

{

pointList.pop_front();

}

float max_lineWidth = 5;

float min_lineWidth = 1;

int   alpha_min = 10;

int   alpha_max =  200;

int  R = arc4random()%255;

int  G = arc4random()%255;

int  B = arc4random()%255;

int pointListCount = pointList.size();

std::list <CCPoint>::iterator it =pointList.begin();

float pointIndex = 0;

for(;it!=pointList.end();it++)

{

int distanceToMiddle = fabs(pointIndex-pointListCount/2);

float percent = 1.0-(float)distanceToMiddle/(float)(pointListCount/2.0);

float lintWidth = min_lineWidth + max_lineWidth*percent;

int alpha = alpha_min +alpha_max*percent;

ccc4(R,G,B,alpha );

ccPointSize(lintWidth);

ccDrawPoint( *it );

pointIndex++;

}

}

void HelloWorld::ccTouchesBegan(CCSet *pTouches,CCEvent *pEvent)

{

CCSetIterator it = pTouches->begin();

CCTouch* touch = (CCTouch*)*it;

CCPoint beginPoint = touch->getLocationInView();

beginPoint = CCDirector::sharedDirector()->convertToGL(beginPoint);

pointList.push_back(beginPoint);

}

void HelloWorld::ccTouchesMoved(CCSet *pTouches,CCEvent *pEvent)

{

CCSetIterator it = pTouches->begin();

CCTouch* touch = (CCTouch*)*it;

CCPoint nextPoint = touch->getLocationInView( );

nextPoint = CCDirector::sharedDirector()->convertToGL(nextPoint);

CCPoint preMovePoint = touch->getPreviousLocationInView();

preMovePoint = CCDirector::sharedDirector()->convertToGL(preMovePoint);

float distance = ccpDistance(nextPoint, preMovePoint);

if (distance > 1)

{

int d = (int)distance;

for (int i =0; i < d; i++ )

{

float distanceX = nextPoint.x - preMovePoint.x;

float distanceY = nextPoint.y - preMovePoint.y;

float percent = i / distance;

CCPoint newPoint;

newPoint.x = preMovePoint.x + (distanceX * percent);

newPoint.y = preMovePoint.y + (distanceY * percent);

pointList.push_back(newPoint);

}

}

}

void HelloWorld::ccTouchesEnded(CCSet *pTouches,CCEvent *pEvent)

{

pointList.clear();

}

Cocos2d-x 水果忍者划痕效果

时间: 2024-12-15 16:37:09

Cocos2d-x 水果忍者划痕效果的相关文章

作品展示,JavaScript 版水果忍者

点这里 <水果忍者>是一款非常受喜欢的手机游戏,刚看到新闻说<水果忍者>四周年新版要上线了.网页版的切水果游戏由百度 JS 小组开发,采用 vml + svg 绘图,使用了 Raphael,效果很赞,赶紧来膜拜一下. https://github.com/ChineseDron/fruit-ninja 在线演示      源码下载

Cocos2DX笔记----------使用opengl实现水果忍者刀刃轨迹

最近有个小需求,需要实现水果忍者刀刃的效果,网上找了很多实例代码,查了很多资料,终于捣鼓了出来. 效果图如下: 图1: 图2: 该算法还是比较简单的,先说说流程: [收集轨迹点]主要是使用了cocos2dX中的ccTouchesBegan和ccTouchesMoved ccTouchesBegan里面包含了刷新最近轨迹点的功能 ccTouchesMoved里面包含了添加轨迹点的功能 此时需要一个数组用于记录轨迹的ccpoint,我将它命名为mPointArray,用于存储这些轨迹点.每次手指按下

水果忍者激战版的开发心得

先放下载地址:http://dl.uu.cc/p2p/(在android 手机浏览器上输入后点击下载就OK) 去年8月份一開始接到任务,是要做一个手机间实时通信的桥梁,大家都知道国外的视频通话早已成熟,国内这坑爹的网速实在是坑爹(这高昂的费用既使能用也不敢用),在网速坑爹的时候想搞实时通信.在国内还是首义. 也不是没有类似的应用,比方微信对讲,YY语音等,但都是异步的,实时谈不上,在网络稍不好的情况下,延时是非常大的. 当然,实时通信也是有延时的,那延时大到多少就不算实时呢,我们觉得,仅仅要用户

基于html5 canvas和js实现的水果忍者网页版

今天爱编程小编给大家分享一款基于html5 canvas和js实现的水果忍者网页版. <水果忍者>是一款非常受喜欢的手机游戏,刚看到新闻说<水果忍者>四周年新版要上线了.网页版的切水果游戏由百度 JS 小组开发,采用 vml + svg 绘图,使用了 Raphael,效果很赞,赶紧来膜拜一下.效果图如下: 在线预览   源码下载 实现的代码. html代码: <canvas id="view" width="640" height=&q

C++视频教程:C++实战水果忍者游戏

C++实战水果忍者游戏(游戏引擎.Win32编程.MFC精讲.核心算法)课程讲师:今夜有风 课程分类:游戏开发适合人群:初级课时数量:56课时用到技术:Win32编程.核心算法涉及项目:水果忍者咨询QQ:1840215592 C++视频教程:C++实战水果忍者游戏详细查看:http://www.ibeifeng.com/goods-500.html一.模块介绍(共56讲)1.基础篇:主要讲解c++以及MFC的深入浅出容器与算法精讲类与数据抽象精讲模板与泛型编程精讲标准IO库知识点深入浅出CObj

【切西瓜】水果忍者去广告版 v1.9.1

水果忍者高清去广告--Fruit Ninja(水果忍者)是一款在移动设备上非常有名的游戏,水果忍者去广告版这款游戏目前在国内是由乐逗游戏代理的,内置了简体中文. 在 Fruit Ninja(水果忍者)这款游戏中,你的目的只有一个——砍水果!屏幕上会不断跳出各种水果西瓜,凤梨,猕猴桃,草莓,蓝莓,香蕉,苹果等等在它们掉落之前要快速的全部砍掉!千万别砍到炸弹!不然就over了.时间模式没有炸弹,玩法全凭你的技巧!还有一定几率从屏幕左右侧弹出新奇水果很难切割! <水果忍者>不仅支持中文,还加入了全新

水果忍者

转帖:https://github.com/ChineseDron/fruit-ninja 绘图上,仍然是采用了 vml+svg,这是我一直比较推荐的组合,不过不要一听 vml.svg 等就头大,市面上针对 vml.svg 封装的库还是瞒多的,我用得比较顺手的就 Raphael 了,她的 API 非常简单,支持链式调用,浏览器的兼容性一直很让人满意.在开发水果忍者时,我手贱升级了一把 Raphael 2.1.0,发现性能比较低,又一直找不到原因,无奈又得降回了 1.5,值得注意的是,2.1.0

java游戏制作之水果忍者

水果忍者的原理很简单,主要就是采用随机的方式是画面上面出现水果. package Fruitninja; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import java.util.Random; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; public class

游戏开发之[水果忍者]:月流水持续近千万 推新模式

狗刨学习网报道 / 由Halfbrick Studios于2010年开发的一款在<水果忍者>在移动平台创造了2年内在全球游戏被下载3亿次的不朽成绩.而这款曾风靡全球的游戏在被乐逗游戏代理发行后,将该游戏继续发扬光大.据官方所公布的数据,<水果忍者>自进入中国市场4年以来,已经实现了近3亿的下载量,其月流水持续近千万,DAU维持100万的成绩. 作为一款已经上线4年的休闲游戏,该游戏还能维持这样的成绩,主要还是靠乐逗游戏对这款游戏不断制作出新版本,增加新内容.根据历往记录显示,这款&