《Cocos2d 跨平台游戏开发指南(第2版)》一1.8 让精灵动起来

1.8 让精灵动起来

在这一部分,我们将讨论如何让精灵动起来。我们将修改自定义精灵类,让角色动起来。通过提供带有许多图像的Cocos2D,并使之循环通过这些图像,即可产生动画效果。

1.8.1 准备工作

为了让精灵动起来,我们将添加 4 帧动画,并将其应用到 hero 精灵类,通过使用repeatForever动作让图像循环动起来。在下一部分,我们将详细讲解有关动作的内容。

1.8.2 操作步骤

在本章的Resources文件夹中,含有hero帧的普通、ipad、ipadhd版本图像。我们把所有这些图像文件导入到项目中,如图1-23所示。

在Hero.m文件中,修改initWithFilename文件,如下:

-(id)initWithFilename:(NSString *)filename
{
  if (self = [super initWithImageNamed:filename]) {

    NSMutableArray *animFramesArray = [NSMutableArray array];

    for (inti=1; i<=4; i++){

      [animFramesArrayaddObject:
        [CCSpriteFrameframeWithImageNamed:
        [NSStringstringWithFormat:@"hero%d.png",i ]]];

    }

    CCAnimation* animation =
      [CCAnimation
      animationWithSpriteFrames:animFramesArraydelay:0.3];

    CCActionInterval *animate=
      [CCActionAnimateactionWithAnimation:animation];

    CCAction* repeateAnimation =
      [CCActionRepeatForeveractionWithAction:animate];

      [selfrunAction:repeateAnimation];

    }

  return self;
}
@end

在上述代码中,我们先是创建了一个NSMutableArray类型的新变量,命名为animFramesArray。然后,创建一个for循环,循环变量i从1到4,这是因为总共有4幅图像。通过传入想遍历的4幅图像的名称,我们把动画帧保存到数组之中。

接着,我们创建一个CCAnimation类型的变量,命名为animation,在4个动画帧中进行传递,并且添加延时,设置动画播放时间。

然后,我们创建一个CCActionInterval类型的变量animate,用来通过动画创建一个循环。接着,创建CCAction,调用repeat forever动作,用来不断循环遍历动画。

最后,在当前类上运行动作。

1.8.3 工作原理

现在,你应该能够看到人物角色动起来了,如图1-24所示。动画的播放速度由CCAnimation类的延时进行控制。

我们将看到自定义精灵让人物角色动起来了,并且没有对MainScene中的实例做任何修改。

时间: 2024-12-21 22:15:21

《Cocos2d 跨平台游戏开发指南(第2版)》一1.8 让精灵动起来的相关文章

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

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

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

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

《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.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版)》一1.1 内容简介

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

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

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

《Cocos2d 跨平台游戏开发指南(第2版)》一2.9 滚动难度级别选择场景

2.9 滚动难度级别选择场景 假如你的游戏有多个难度级别,例如有20个等级,那么只用一个单独的难度级别选择场景来显示所有的级别选择按钮是可以的.但是,要是有更多等级呢?在本部分中,我们将修改前面编写的代码,创建一个节点,并进行初始化,从而产生一个可以滚动的难度级别选择场景. 2.9.1 准备工作 我们将创建一个新类,将其命名为LevelSelectionLayer,它继承自CCNode类.然后,把我们在前面添加到LevelSelectionScene中的所有代码复制到其中.这样一来,我们就有了一

《Cocos2d 跨平台游戏开发指南(第2版)》一1.11 添加视差效果

1.11 添加视差效果 在本部分,我们将向游戏中添加视差效果(背景滚动效果),它是游戏中非常流行的一种效果.在视差效果中,相比于背景中的对象,前景中的对象移动得更快,背景中的对象移动得要慢很多,借此产生立体感与运动错觉. 1.11.1 准备工作 回想一下以前的电影片段,其中的英雄或主角保持静止不动,他们看上去就像在骑马一样,背景不断循环,让人产生错觉,以为英雄在场景中真地向前移动,如图1-31所示. 下面我们将实现一个非常简单的视差效果,其中所有的背景对象(例如,树.灌木.草)都以相同的速度进行