- 浏览: 264680 次
- 性别:
- 来自: 大连
文章分类
最新评论
实现原理:
画直线
在一个 list 列表里记录所有的触摸点,在 draw 函数里开始画线,线段逐渐加粗,在末端逐渐减细。可以直接用 Cocos2d 里的 box2d 模板,添加了少量代码即可。
//使用list列表保存所有点
画直线
在一个 list 列表里记录所有的触摸点,在 draw 函数里开始画线,线段逐渐加粗,在末端逐渐减细。可以直接用 Cocos2d 里的 box2d 模板,添加了少量代码即可。
//使用list列表保存所有点
std::list<CGPoint> pointl; -(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint start = [touch locationInView: [touch view]]; start = [[CCDirector sharedDirector] convertToGL: start]; CGPoint end = [touch previousLocationInView:[touch view]]; end = [[CCDirector sharedDirector] convertToGL:end]; float distance = ccpDistance(start, end); if (distance > 1) { int d = (int)distance; for (int i = 0; i < d; i++ ) { float difx = end.x - start.x; float dify = end.y - start.y; float delta = (float)i / distance; CGPoint p; p.x = start.x + (difx * delta); p.y = start.y + (dify * delta); pointl.push_back(p); } } pointcount = pointl.size(); } //************************************* draw函数核心代码 -(void) draw { CGPoint pr; glPointSize( 0.3f ); list <CGPoint>::iterator b = pointl.begin(); glColor4ub(255,255,255,32); for(;b!=pointl.end();b++) { CGPoint pt = *b; ps++; //控制线段的粗细,使达到两头细中间粗的效果 if (ps > (pl -30 )) // initlw > 5 ) { initlw=initlw-lwc; } else { if (initlw < 6 ) { initlw =initlw+lwc; } } glLineWidth( initlw); if (pr.x > 1 && pr.y > 1 ) { //画线段,也可以使用点 ccDrawLine(pr, pt ); } pr = *b; } } //********************************************** //自动缩短线段 -(void) tick: (ccTime) dt { //It is recommended that a fixed time step is used with Box2D for stability //of the simulation, however, we are using a variable time step here. //You need to make an informed choice, the following URL is useful //http://gafferongames.com/game-physics/fix-your-timestep/ int32 velocityIterations = 8; int32 positionIterations = 1; // Instruct the world to perform a single step of simulation. It is // generally best to keep the time step and iterations fixed. world->Step(dt, velocityIterations, positionIterations); //********************************************* //** for (int i=0; i<12 ; i++) { if (pointl.size() >0) { pointl.pop_front(); pointcount--; } else { break; } } //为了使线段不过长 while (pointcount >200) { pointl.pop_front(); //pointcount--; pointcount=pointl.size(); } //******************************************** }
发表评论
-
cocos2d 在玩游戏的时候不进入待机模式
2012-04-11 10:19 954[UIApplication sharedApplicatio ... -
如何设置touch的响应层或吸收终端层
2012-03-07 22:44 0[[CCTouchDispatcher sharedDis ... -
将UIImage中像素的黑色转成透明色
2012-03-07 22:22 0void ProviderReleaseData ... -
cocos2d添加输入框
2012-02-23 17:33 0添加输入框,因此搜了一下找了这个方法 [[[[CCDirec ... -
debug模式调试
2012-02-20 10:59 0-(void) dealloc{ CCLOG(@&qu ... -
随机在屏幕上产生一个坐标点
2012-02-20 10:28 0//根据某个数字随机产生一个坐标点 - (CGPoint ... -
判断触摸点是否与精灵碰撞
2012-02-20 10:28 0//碰撞检测 - (BOOL) circle:(CGPo ... -
iphone开发基础:【object-c系列教程完毕】
2011-10-25 11:11 1427iphone开发基础:【object-c系列教程完毕】 接下来 ... -
(转)把两个Layer融合成一个UIImage的截图方法
2011-09-27 10:15 3515//layer1 CCLay ... -
cocos2d 使用 NSThread
2011-09-26 14:43 884-(void)toR_therd:(id) sender ... -
NSNotificationCenter
2011-09-26 14:23 1109定义一个消息中心 [[NSNotification ... -
COCOS2D 事件冒泡规律 和 CCMenu一直响应事件的解决办法
2011-09-09 12:50 2332cocos2d把响应事件的对像放入一个栈中,用先进后出的规率来 ... -
box2d 中设置界面大小的函数
2011-09-09 10:52 910-(void)activePageWhenEnterIn; ... -
设置 cocos2d 的音效回放参数
2011-09-09 00:05 1514cocos2d 回放音效的默认设置是 44Khz,但 iPho ... -
CCLayer
2011-09-08 23:52 3170一个场景(Scene)上可能有多个Layer 引用CCLaye ... -
Scene
2011-09-08 23:50 1039scene永远是一个场景上的根节点 引用scene(即 CCS ... -
定时消息 update:方法
2011-09-08 23:48 1625scheduleUpdate方法会执行update:方法,每帧 ... -
CCAction
2011-09-08 23:46 1147Node可以执行Action 声明并运行action CC ... -
CCNode
2011-09-08 23:44 1191CCNode是所有节点的父类包括(Layer, Sprite, ... -
CCDirector
2011-09-08 23:43 2581首先接触到的是CCDirector类,顾名思义是2d动画的导演 ...
相关推荐
Fruit Ninja水果忍者VR.apk(oculus quest 游戏) 这个就不用多介绍了吧,喜欢玩的自然就喜欢,在VR的世界里挥动双刀切水果。 送给正在研究安卓开发的朋友们做参考。
山东第三届acm大赛Fruit Ninja 内有详细注释。好运
scratch Fruit Ninja 游戏,用scratch图形化平台编辑。
标题中的"fruit-ninja-master"指的是一个开源项目,它可能是《水果忍者》游戏的源代码仓库。《水果忍者》是一款在全球范围内广受欢迎的休闲切水果游戏,由Halfbrick Studios开发。通过分析这个项目的源码,我们可以...
Fruit Ninja.rp
水果忍者-Fruit Ninja.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码水果忍者-Fruit Ninja.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码水果忍者-Fruit Ninja.zipscratch2.0 3.0编程...
1. 游戏对象(Game Objects):在“fruit ninja master”中,游戏的对象可能包括水果、刀、炸弹等。这些对象有自己的属性(如位置、速度、类型)和行为(如移动、生成、消失)。源代码中,每个对象可能会被设计成一...
“水果忍者”(Fruit Ninja)是一款在全球范围内广受欢迎的休闲游戏,以其独特的切割水果的游戏玩法和精美的视觉效果吸引了无数玩家。在这个项目中,我们关注的是由Unity引擎开发的国外版本。Unity是一款强大的跨...
在"水果忍者"的实现中,我们可以创建一个主场景,负责管理游戏的整体流程,如游戏开始、暂停、结束等状态。同时,还可以创建单独的层来处理切水果、得分计算和用户界面显示等具体功能。 2. **物体和动作**:在Cocos...
水果忍者 风靡iphone android版
"fn.zip_action _action script_fruit ninja_pene78"这个标题暗示了我们正在探讨的是一个基于AS3实现的《水果忍者》游戏项目,由开发者pene78创建。下面我们将深入解析这个项目中涉及的主要知识点。 首先,让我们来...
这个项目“Simple Fruit Ninja Game using JavaScript”提供了一个免费的源代码,让我们有机会深入了解如何利用JavaScript来创建一个类似《水果忍者》的小游戏。这个游戏的核心玩法是切水果,玩家通过在屏幕上滑动...
"Fruit-ninja:网页版水果忍者"正是这样一个项目,它将游戏移植到了网页环境中,让玩家无需下载应用,只需打开网页即可开始切水果的乐趣。 在项目描述中提到,这个网页版的水果忍者是用作消遣娱乐的,适合在空闲时间...
Windows Phone 7上的水果忍者。 XAP包。部署到手机上即可使用。
Ninja是一款高效的命令行构建工具,特别适用于C++项目,它由Google开发并开源。这款工具的设计目标是快速、简洁和跨平台,旨在提高开发者的工作效率。在“ninja.zip_构建工具_64位_ninja_win10”这个压缩包中,包含...
这个是远古版本哦开心(*^o^)人(^o^*)
2. **构建文件格式**:ninja使用一种简洁的文本文件格式,名为`build.ninja`,其中定义了目标、依赖关系和构建规则。这种格式旨在使构建文件更易于理解和编辑,同时也适合由其他工具自动生成。 3. **依赖性管理**:...
Ninja是一款轻量级且速度极快的构建系统,旨在优化编译时间,尤其适合大型项目。它最初由Google开发,现已成为许多开源项目和持续集成系统的首选构建工具。 标题中的“ninja加速编译应用程序”指的是利用Ninja来...
标题 "ninja-win-1.10.2.zip" 暗示了这是一个针对Windows平台的ninja构建工具的版本1.10.2的压缩包。ninja是一款高效的自动化构建系统,它专注于速度和简洁性,常用于C++和其他语言的项目构建,尤其是在与Google的...
4. **cloud native**:这是对“云原生”的另一种表达,强调ninja可能遵循云原生原则,即设计时考虑了云环境的特性,如可移植性、自动化和敏捷性。 5. **Python库**:ninja作为一个Python库,意味着它可以被其他...