《Cocos2d 跨平台游戏开发指南(第2版)》一1.9 添加动作到精灵

1.9 添加动作到精灵

在前面的动画制作中,我们已经学习了一些有关Actions的内容。除此之外,Cocos2d中还有更多动作供你使用。并且,你也可以把多种动作组成一个动作序列,集中应用到目标对象上。

1.9.1 准备工作

首先,让我们一起看一个简单的动作,它用来把hero沿着x轴移动屏幕宽度的一半,并沿y轴方向从中心向下移动屏幕高度的四分之一。

1.9.2 操作步骤

在把hero添加到MainScene之后,在MainScene.m文件中添加如下代码:

CGPointfinalPos = CGPointMake(center.x + winSize.width/4, center.y -
winSize.height/4);
CCActionFiniteTime* actionMove = [CCActionMoveToactionWithDuration
:1.0position:finalPos];
[herorunAction:actionMove];

为了方便起见,我创建了一个CGPoint,命名为finalPos,用来存储最终位置。然后,创建一个CCActionFiniteTime类型的变量actionMove,调用CCMoveTo函数,指定动作的持续时间为1.0秒,并且给出想把hero移动到的目的位置。最后,调用hero的runAction函数,传入创建好的动作。

1.9.3 工作原理

当你运行项目时,hero起初位于黄色渲染精灵的左侧,而后慢慢开始向右下角移动,(注:原文中if the render sprite is over a period of 1second一句,建议删除,因为并未对render精灵施加动作,它是一直存在的)经过1秒之后,hero到达目标位置,移动动作停止,hero将再次静止不动,如图1-25所示。

1.9.4 更多内容

接下来,让我们创建更多动作,然后把这些动作放入一个动作序列中,依次执行这些动作。为此,我们将添加如下代码,替换掉之前的动作代码:

//Actions

CGPointinitPos = hero.position;
CGPointfinalPos = CGPointMake(center.x + winSize.width/4, center.y -
winSize.height/4);

CCActionFiniteTime* actionMove = [CCActionMoveToactionWithDuration:
1.0position:finalPos];

CCAction *rotateBy = [CCActionRotateByactionWithDuration:2.0 angle:
180];

CCAction *tintTo= [CCActionTintToactionWithDuration:1.0
color:[CCColorcolorWithRed:0.0fgreen:1.0blue:0.0]];

CCAction *delay = [CCActionDelayactionWithDuration:1.0];

CCAction *moveToInit = [CCActionMoveToactionWithDuration:
1.0position:initPos];

CCAction *rotateBack = [CCActionRotateByactionWithDuration:2.0 angle:
180];

CCAction *tintBlue= [CCActionTintToactionWithDuration:1.0
color:[CCColorcolorWithRed:0.0fgreen:0.0blue:1.0]];

CCAction *sequence = [CCActionSequenceactions:actionMove,
rotateBy,tintTo, moveToInit, delay, rotateBack, tintBlue, nil];

[herorunAction:sequence];

在上面代码中,在把最终位置保存到finalPos变量之后,我又把hero的初始位置保存到名称为initPos的CGPoint类型变量中,后面我们会用到它。

第一个动作是moveTo动作,用来把角色移动到指定的位置。

接着,我们将使用rotateBy动作,对角色进行旋转,并指定持续时间与旋转角度。

随后,我们会使用tintTo动作,它用来改变角色对象的颜色,并再次给出持续时间与想改变的颜色。本示例中,我们把角色的颜色更改为绿色。

然后,我们调用延时动作,用来在执行下一个动作之前暂停一段时间。在示例中,我们把延时时间设置为1秒。

接下来,我们要把角色对象移动到最初位置,改变对象颜色为蓝色,再次把对象旋转180度。

然后,创建CCSequence动作,把所有动作放入其中,以便依次播放这些动作。动作添加完之后,再添加一个nil,表示动作列表结束。

最后,我们调用hero的runAction函数,执行动作序列。

现在,人物角色将从起始位置开始执行一系列动作,当他返回起始位置时,将变为蓝色。

代码产生的效果如图1-26所示。

时间: 2024-09-20 07:09:27

《Cocos2d 跨平台游戏开发指南(第2版)》一1.9 添加动作到精灵的相关文章

《Cocos2d 跨平台游戏开发指南(第2版)》一导读

前 言 Cocos2d 跨平台游戏开发指南(第2版)自从2007年创始以来,Apple App Store一直保持着持续增长的势头,每天平均约有500个App提交.其中,大约80%的App是游戏.形成这种局面的部分原因是Apple构建了一个非常棒的生态系统,免费提供操作系统和IDE开发环境,便于普通开发者接触并使用它们.另一部分原因在于Cocos2d框架,它是目前应用最广泛的免费iOS游戏开发框架之一,借助它,开发者能够更方便地开发游戏和App应用. SpriteBuilder把Cocos2d集

《Cocos2d 跨平台游戏开发指南(第2版)》一第1章 精灵与动画

下载并安装Cocos2d 2D坐标系统 访问主场景(MainScene) 添加精灵到场景 使用RenderTexture创建精灵 创建自定义精灵类 动画精灵 添加动作到精灵 绘制gIPrimitives 添加视差效果

《Cocos2d 跨平台游戏开发指南(第2版)》一2.3 使用CCLabel添加文本

2.3 使用CCLabel添加文本 在这一部分,我们将学习如何向场景中添加文本.在Cocos2d中,有两种方法可以用来向场景中添加文本:一种是使用CCLabelTTF类,另一种是使用CCLabelBMFont类.我们将在本书第9章的Glyph Designer一节中讲解CCLabelBMFont,本部分我们只讲解CCLabels,了解一下它们是如何工作的. 2.3.1 准备工作 CCLabelTTF使用Mac系统中现有的系统字体.在使用CCLabelTTF类时,我们只需指定要使用的字体名称.希望

《Cocos2d 跨平台游戏开发指南(第2版)》一1.1 内容简介

1.1 内容简介 在本章中,我们将介绍有关Cocos2d框架的一些基本知识,以便帮助各位了解相关概念.首先,了解下载并安装SpriteBuilder/Cocos2d的过程,然后讲解Cocos2d中使用的2D坐标系统. 在学完基础内容之后,接着介绍精灵的基本属性以及如何把它们添加到场景之中.我们将了解一下如何把一幅图像添加到精灵对象,并讨论如何创建一个占位精灵,以便在游戏原型阶段测试基本的游戏机制与冲突.然后,再学习如何使用gIPrimitives创建基本形状.在此之后,我们将讨论如何使用动作对精

《Cocos2d 跨平台游戏开发指南(第2版)》一1.3 2D坐标系统

1.3 2D坐标系统 在2D游戏开发中,我们只需考虑两种坐标系统,一种是屏幕坐标系统,另一种是对象坐标系统. 在2D中,无论何时,当我们把一个对象放置到屏幕上时,总是要考虑对象离屏幕的左下角有多远.这是因为坐标原点位于屏幕的左下角,而非屏幕的中心.正因如此,如果把一个精灵放置到屏幕上,并且未修过它的位置时,它将在屏幕的左下角被创建出来.请记住,屏幕坐标原点[(0,0)]位于屏幕的左下角.如图1-11所示,如果你想把精灵放置到屏幕的中心,需要把精灵位置设置为位置属性中宽与高的一半.由于所有对象的位

《Cocos2d 跨平台游戏开发指南(第2版)》一2.1 内容简介

2.1 内容简介 在上一章中,我们讨论了如何添加与操控精灵.在本章中,我们将学习如何在游戏中创建场景,它们用来在游戏中创建菜单的基本元素. 场景是游戏的基本构件.通常,在一款游戏中会有一个主菜单场景,从主菜单场景玩家可以切换到其他不同场景中,例如游戏场景.选项场景.得分场景等.在每一个场景中都会有菜单. 类似地,在MainScene中,有一个play按钮,它是菜单的一部分,当游戏玩家单击它时,就会切换到游戏场景,并开始运行游戏代码.

《Cocos2d 跨平台游戏开发指南(第2版)》一1.2 下载并安装Coscos2d

1.2 下载并安装Coscos2d 在创建并运行Cocos2d项目之前,必须先安装SpriteBuilder与Xcode.在本部分中,我们将简单地介绍一下如何安装它们. 1.2.1 准备工作 首先到http://cocos2d.spritebuilder.com下载Coscos2d,并进行安装. 目前Spritebuilder已成为Cocos2d的官方安装程序.单击Cocos2d-SpriteBuilder installer链接,随后打开Mac App Store Preview页面,而后完成

《Cocos2d 跨平台游戏开发指南(第2版)》一2.8 添加难度选择场景

2.8 添加难度选择场景 在本部分中,我们将学习如何添加难度选择场景,其中包含多种难度选择按钮,当你按下某个按钮时,相应难度水平的游戏就会被加载进来. 2.8.1 准备工作 为了创建难度级别选择场景,你需要一个自定义精灵,用来显示按钮背景图片以及表示难度级别的数字.首先,我们要创建这些按钮. 在创建好按钮精灵之后,接下来我们要创建一个新场景,用来存放背景图像.场景名称.按钮数组,以及变换场景到指定游戏难度的逻辑. 2.8.2 操作步骤 首先,我们创建一个新的 Cocoa Touch 类,命名为L

《Cocos2d 跨平台游戏开发指南(第2版)》一2.7 添加过渡效果

2.7 添加过渡效果 如果你认为添加过渡效果十分酷炫,你可以在Cocos2d中添加切换场景时的过渡效果,这十分简单. 2.7.1 准备工作 我们真正需要做的是,在playBtnPressed函数中,使用设置过渡效果的代码代替前面所写的代码.创建过渡效果时,需要使用CCTransition类. 2.7.2 操作步骤 在playBtnPressed函数中,使用如下粗体代码代替上一节编写的代码. -(void)playBtnPressed:(id)sender{ CCLOG(@"play button