如果我们想实现让CCSprite进行抛物线运动的话,那么我想童鞋们首先会想到利用Box2d或者其他物理引擎去为CCSprite创建物理世界中对应的刚体进行实现,但是反过来想,对于不熟悉Box2d或者其他物理引擎的童鞋,肯定不方便,那么Himi今天为大家介绍另外一种不实用物理引擎实现CCSprite抛物线方式;
这里我直接将封装好的方法贴上来,注释都在代码中了:
- // 抛物线 -Himi
- //mSprite:需要做抛物线的精灵
- //startPoint:起始位置
- //endPoint:中止位置
- //dirTime:起始位置到中止位置的所需时间
- - (void) moveWithParabola:(CCSprite*)mSprite startP:(CGPoint)startPoint endP:(CGPoint)endPoint dirTime:(float)time{
- float sx = startPoint.x;
- float sy = startPoint.y;
- float ex =endPoint.x+50;
- float ey =endPoint.y+150;
- int h = [mSprite contentSize].height*0.5;
- ccBezierConfig bezier; // 创建贝塞尔曲线
- bezier.controlPoint_1 = ccp(sx, sy); // 起始点
- bezier.controlPoint_2 = ccp(sx+(ex-sx)*0.5, sy+(ey-sy)*0.5+200); //控制点
- bezier.endPosition = ccp(endPoint.x-30, endPoint.y+h); // 结束位置
- CCBezierTo *actionMove = [CCBezierTo actionWithDuration:time bezier:bezier];
- [mSprite runAction:actionMove];
- }
之前在Android上我也有讲解过贝塞尔曲线的博文,但是Android中不同于cocos2d封装这个,在cocos2d中的Bezier是封装为了精灵动作,让精灵按照贝塞尔曲线的路线去运动;那么以上封装的代码中对于抛物线运动来说最重要的一点就是创建贝塞尔曲线的第二个点,这个点控制着精灵路径的所经过的最高点,这里务必要知道;
这种实现方式虽然没有物理系统对刚体施加力来的真实,但是!我想这段代码的实用性还是很大的,至少不需要使用box2d引擎相关知识,最重要的优点是不会存在上一章介绍的代码混编带来的编译错误~
//---- OK,下面来介绍第二个知识点:
很多童鞋学习cocos2d,一般不经常更新的动画,会使用cocos2d封装的动作,例如旋转、渐变、位移等等,那么一旦使用动作后,肯定就有需要两个动作一起播放的需求,那么基本上童鞋们大脑中第一闪现的就是利用cocos2d的动作序列 CCSequence,但是效果不理想,原因很简单,因为顾名思义,既然是动作序列,那就是按照动作的顺序一个动作一个动作的进行播放,也就是说利用动作序列只能达到连续播放动作,无法同时播放动作的目的;
那么在这里给大家一个方法能让两个动作同时播放的方法:
这里为了讲解方便,我在刚才封装的贝塞尔曲线上的方法上进行修改,添加一个旋转的动作,让贝塞尔曲线运动与旋转动作同时播放,这里Himi使用一根“矛”的图片作用示意图来说明,因为矛与箭的运动方式最常用的动作肯定是一边旋转一边抛物线位移,这样才更加真实;
OK,看下封装角度后的抛物线并同时旋转方法如下:
- // 抛物线运动并同时旋转 -Himi
- //mSprite:需要做抛物线的精灵
- //startPoint:起始位置
- //endPoint:中止位置
- //startA:起始角度
- //endA:中止角度
- //dirTime:起始位置到中止位置的所需时间
- - (void) moveWithParabola:(CCSprite*)mSprite startP:(CGPoint)startPoint endP:(CGPoint)endPoint startA:(float)startAngle endA:(float)endAngle dirTime:(float)time{
- float sx = startPoint.x;
- float sy = startPoint.y;
- float ex =endPoint.x+50;
- float ey =endPoint.y+150;
- int h = [mSprite contentSize].height*0.5;
- //设置精灵的起始角度
- sprite.rotation=startAngle;
- ccBezierConfig bezier; // 创建贝塞尔曲线
- bezier.controlPoint_1 = ccp(sx, sy); // 起始点
- bezier.controlPoint_2 = ccp(sx+(ex-sx)*0.5, sy+(ey-sy)*0.5+200); //控制点
- bezier.endPosition = ccp(endPoint.x-30, endPoint.y+h); // 结束位置
- CCBezierTo *actionMove = [CCBezierTo actionWithDuration:time bezier:bezier];
- //创建精灵旋转的动作
- CCRotateTo *actionRotate =[CCRotateTo actionWithDuration:time angle:endAngle];
- //将两个动作封装成一个同时播放进行的动作
- CCAction * action = [CCSpawn actions:actionMove, actionRotate, nil];
- [mSprite runAction:action];
- }
附上运行效果图:
左侧的矛是起始位置,后侧的是抛物线与旋转两个动作同时进行运动中的矛~
好了,就讲这么多吧,今天样书出来了,比较海皮~哈哈;
本文出自 “Himi” 博客,请务必保留此出处http://xiaominghimi.blog.51cto.com/2614927/665781
相关推荐
在这个“Cocos2D游戏之旅:贝塞尔曲线画心形”中,我们将深入探讨贝塞尔曲线这一重要的图形绘制技术及其在Cocos2D中的应用。 首先,让我们理解什么是贝塞尔曲线。贝塞尔曲线是一种在计算机图形学中广泛使用的参数...
《cocos2d游戏开发之旅》是一本专为游戏开发初学者设计的教程,它深入浅出地介绍了使用cocos2d框架进行移动游戏开发的基本概念和技术。cocos2d是一个广泛使用的开源游戏引擎,特别适合开发2D游戏,其易用性、灵活性...
Cocos2d是一款广泛用于创建2D游戏、交互式应用和视觉效果的开源框架,尤其在iOS和Mac OS X平台上非常流行。它基于Objective-C语言,同时也提供了Swift接口。本教程涵盖从基础到进阶的cocos2d游戏开发全过程,共13...
本教程将带你踏入Cocos2D游戏开发的大门,通过学习,你将掌握如何利用这个强大的工具创建令人惊叹的2D游戏。 首先,了解Cocos2D的基本概念至关重要。Cocos2D是一个基于OpenGL的2D渲染引擎,它为开发者提供了一套...
在iOS游戏开发中,Cocos2d-x是一个广泛使用的2D游戏引擎,其在iOS上的版本称为Cocos2d-iPhone。本知识点主要探讨的是Cocos2d-iPhone中的动作(Action)系统,特别是延时动作(DelayTime)。在Cocos2d中,动作是一种...
它分为线性贝塞尔曲线(两个控制点)、二次贝塞尔曲线(三个控制点)和三次贝塞尔曲线(四个控制点)。曲线的形状完全取决于这些控制点的位置,通过调整控制点,可以得到所需的各种曲线形状。 在JavaScript中实现...
《cocos2d游戏开发电子书超清》是一本针对初学者的游戏开发指南,专注于cocos2d框架的使用。cocos2d是一款强大的、开源的2D游戏引擎,广泛应用于iPhone游戏开发以及移动平台的其他应用开发。本书旨在帮助读者快速...
在游戏开发领域,Cocos2d是一个广泛使用的2D游戏引擎,它为开发者提供了丰富的功能和易用的API,使得创建交互式游戏变得简单。这篇博客文章将深入探讨Cocos2d中的关键组件——CCSprite,它是构建游戏图形的基础元素...
Cocos2d游戏开发是一个专注于2D游戏开发的开源框架,它支持多种操作系统和编程语言,广泛应用于iOS、Android、Windows等平台的游戏开发。Cocos2d允许开发者快速构建游戏应用,其丰富的功能和灵活的设计让游戏开发变...
在iOS游戏开发中,Cocos2d-x是一个广泛使用的2D游戏引擎,其Cocos2d-iPhone版本专为Objective-C编程语言设计。本主题主要关注Cocos2d-iPhone中的“动作”(Actions)机制,这是一个强大的工具,用于创建各种动画效果...
在iOS游戏开发中,Cocos2d-x是一个广泛使用的2D游戏引擎,它为开发者提供了丰富的功能和便利的API来创建交互式的游戏。本篇主要关注Cocos2d-iPhone中的动作(Action)系统,特别是瞬时动作(Instant Action)。瞬时...
在iOS游戏开发中,Cocos2d是一个广泛使用的2D游戏引擎,特别是在Cocos2d-iPhone版本中,它为开发者提供了丰富的功能和强大的性能。本篇主要关注Cocos2d-iPhone中的“动作”(Action)系统,特别是速度变化...
《iPhone&iPad cocos2d游戏开发实战》这本书深入浅出地介绍了在苹果移动设备上使用cocos2d框架进行游戏开发的技术与实践。cocos2d是一个强大的、开源的游戏开发库,尤其适合初学者和有一定编程基础的开发者,用于...
在本篇关于“【iPhone游戏开发】iPhone-Cocos2d游戏开发”的专题中,我们将深入探讨Cocos2d游戏引擎在iOS平台上的应用,特别是如何使用Cocos2d来实现小鸟眨眼睛的效果。Cocos2d是一款强大的2D游戏开发框架,它为...
### cocos2d游戏开发基础知识点概述 #### 一、cocos2d简介 cocos2d是一款专为iOS和跨平台游戏开发设计的开源框架。它不仅能够支持2D游戏的构建,还提供了丰富的功能来简化游戏开发过程。cocos2d的核心优势在于其...
《cocos2dx游戏开发系列之三:源码解析与Android工程构建》 在游戏开发领域,cocos2dx是一个广泛使用的开源游戏引擎,尤其在跨平台开发中扮演着重要角色。本篇将深入探讨cocos2dx游戏开发系列的第三部分——源码...
《cocos2d游戏开发教程(国外书籍译文)》是一份全面的资源包,旨在帮助初学者和进阶者掌握cocos2d游戏开发的核心技术。cocos2d是一款强大的开源游戏开发框架,广泛应用于iOS、Android以及多个平台的游戏制作。这份...
### iOS Cocos2d游戏开发教程:从入门到精通 #### 引言 在苹果的iTunes App Store以及伴随而来的移动设备(如iPhone、iPod touch和iPad)的推动下,开发并销售自己的计算机游戏变得前所未有的容易。尽管这并不意味...
《iPhone & iPad cocos2d游戏开发实战完整版》是一本专为iOS平台上的游戏开发者编写的实战指南。这本书深入浅出地介绍了如何使用cocos2d框架来创建高性能、交互性强的游戏应用程序。cocos2d是一款强大的开源游戏开发...