iOS和tvOS 2D游戏开发教程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-28 17:38:41

点击下载

作者:[美] raywenderlich.com教程开发组

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

iOS和tvOS 2D游戏开发教程

iOS和tvOS 2D游戏开发教程试读:

前言

在本书中,我们将学习如何使用Apple内建的2D游戏框架Sprite Kit和Swift语言来开发iOS和tVOS游戏。那么,问题来了:

为什么要使用Sprite Kit呢?Sprite Kit是Apple内建的框架,专门用于开发iOS的2D游戏。它易于学习,特别是如果你已经有了一些Swift或iOS经验的话。

为什么选择iOS呢?对于游戏开发者来说,没有更好的平台了。开发工具设计精良,并且易于学习,App Store使得把游戏发布给广大的受众非常简单,而且开发者能够从中得到回报。

为什么选择tvOS呢?Apple公司发布Apple TV不久,并且能够让开发者为Apple TV编写他们自己的程序。对于Sprite Kit来说,很好的一点在于,它是跨平台的,可以用于iOS、OS X和tvOS。如果你能够让自己的游戏在iOS上运行,那么,让其在其他的平台上运行也特别简单。并且,让游戏在大屏幕上运行是特别令人激动的事情。

为什么使用Swift? Swift是一种很容易入门的编程语言,特别是,如果你是iOS平台的初学者的话。此外,我们相信Swift是通向iOS开发的未来的道路,因此,把本书当做是尽早学习Swift的一个机会吧。

为什么是2D游戏?2D游戏更容易开发,而且和3D游戏一样令人印象深刻。美工工作要简单很多,并且编程会更快,不需要太多的数学知识。所有这些,都使得开发者能够更多地关注游戏开发技能。

如果你是初学者,开发2D游戏绝对是最佳的入门方式。

如果你是高级开发者,开发2D游戏还是会比开发3D游戏快很多。既然并不一定能够通过3D游戏赚到更多的钱,为什么不选择更容易胜出的方式呢?此外,一些人(例如我)更喜欢2D游戏。

那么,剩下的事情就很自然了,有了iOS、tvOS、2D游戏和Sprite Kit,你就做出了最佳的选择。本书写作初衷

两年前,我编写了一本名为《iOS Games by Tutorials》的图书,介绍了如何使用Sprite Kit开发2D游戏。一年后,我发布了这本书完全升级到Swift的第2版,并为已有的电子书读者免费更新。

在今年的WWDC上,Apple发布了一组叫做GameplayKit的、新的API。这一组API使得我们很容易将寻路算法、AI和其他很酷的功能添加到游戏中。

然后,还有“房间里的大象”——tvOS,现在,它使得我们能够开发在起居室里玩的游戏。

这些更新都很重要,以至于无法仅仅对《iOS Games by Tutorials》进行更新来完全涵盖这些内容,因此,我决定完全重新写一本书。这就是你手里的这本书。

如果你曾经阅读过《iOS Games by Tutorials》的话,你可能会问,本书中有什么新的内容呢?这里按照本书中包含的游戏来简单介绍一下。

Zombie Conga:第1~4章大部分内容和《iOS Games by Tutorials》是相同的。第5章是全新的,介绍了iOS 9中新引入的SKCamera类。我们还在第6章中介绍了标签。添加了新的第7章,介绍如何将这款游戏迁移到tvOS上。

Cat Nap: 这些章进行了重新编写,以利用iOS 9中的Sprite Kit场景编辑器的新功能。第12章完全重写了,更加有效地介绍了相关的主题。最后,我们添加了新的、关于一些更高级的tvOS迁移技术的一章,即第13章。

Drop Charge:这是一个全新的游戏,也涉及全新的几章(第14~17章)。在这些章中,我们将回顾本书前面的一些内容,并学习有关GameplayKit状态机、粒子系统和果汁的相关内容。

Dino Defense:这是本书中的第2个新游戏,也涉及全新的一些章(第18~20章)。在这些章中,我们将深入到GameplayKit中,学习其实体—组件系统、寻路算法和代理、目标和行为功能。

Delve:这是本书中第3个全新的游戏以及一些全新的章(第21~24章)。在这些章中,我们将深入到贴图地图游戏、程序式关卡和GameplayKit随机化等较为高级的话题。

CircuitRacer:第24章和第25章基本上和《iOS Games by Tutorials》中的内容相同。此外,还有两个全新的章,分别介绍了新的ReplayKit API(第27章)和加入iAd(第28章)。

正如你所看到的,这些就是主要的更新。如果你之前阅读过这本书,并且时间有限,最好的办法是关注那些新的游戏,或者你最感兴趣的章节。本书简介

这本书有点与众不同。在raywenderlich.com上,我们的目标是让本书成为你所阅读过的关于游戏编程的最好的图书。

已经有很多关于游戏编程的图书了,并且其中的很多图书都是相当不错的,因此,这是一个崇高的目标。为了实现这一目标,我们做了如下的一些设计。

从开发游戏中学习:所有的图书都会教授高级概念并展示代码片段,但是,很多图书都留待读者自己来组合一个完整的、功能完备的游戏。在本书中,你将通过开发5个不同类型的、真的很有趣的游戏来学习。我们希望你能够重用这些游戏的技术和代码,来开发你自己的游戏。

从挑战中学习:本书的每一章的末尾都包含了一些挑战,这些挑战设计来帮助实践所学的知识。按照教程学习是一回事,应用所学的知识是另外一回事。本书中的挑战启动了训练的步伐,并且推动你通过自己解决问题来巩固知识(当然,我们也提供一些解答)。你最好是尝试自己完成这些挑战。

关注打磨:开发一款很好的游戏的关键是要进行打磨,也就是添加大量经过细致思考的细节,使得你的游戏与众不同。为此,我们拿出了实际行动,并且投入了一流的美术师和声音设计师,为本书中的游戏创建了资源。我们还编写了有关使用特效来打磨游戏的一章,这也可以称为给游戏加点“果汁”,相信你会喜欢这一章。

高质量的教程:我们的站点因为提供高质量的编程教程而知名,并且我们在本书的对应教程中花费了很多的时间和精力,以使得这个教程的品质配得上其价格(如果还没有达到物超所值的话)。每一章都经过了严格的、多个步骤的编辑过程,这使得每一章都要写好几次。我们已经尽全力保证每一章都包含很好的技术内容,而同时又很有趣并且易于学习。

当你阅读完本书后,如果你认为我们已经成功地满足了这些目标,请让我们知道。你可以随时给我们发E-mail:ray@raywenderlich.com。

我们希望你喜欢这本书,并且我们已经迫不及待地想要看看你会开发出什么样的游戏了。iOS游戏开发的历史回顾

正如你将会看到的,使用Sprite Kit开发iOS游戏是很容易的,但是,并非总是这样的。在iOS早期的日子里,你开发游戏的唯一的选择就是OpenGL ES,它(和Metal)是该平台上可用的最底层的图形API。OpenGL ES特别难以学习,并且它是很多游戏开发初学者的一个巨大障碍。

此后不久,第三方的开发者基于OpenGL发布了一些游戏开发框架,其中最流行的是Cocos2D,实际上,我们还编写过一本关于Cocos2D的图书。App Store排行榜上的很多游戏都是使用Cocos2D开发的,并且很多开发者表示Cocos2D是他们进入游戏开发领域的起点。

Cocos2D是一个很好的框架,但是,它并不是为Apple而编写的,也没有得到Apple的有力支持。为此,当iOS的新版本发布的时候,或者当系统中加入其他的Apple API的时候,常常会出现问题。

为了解决这个问题,Apple发布iOS 7的时候带有一个新的、用于制作2D游戏的框架,这就是Sprite Kit。其API和Cocos2D非常相似,精灵、动作和场景的类型都和开发者所熟知和喜爱的Cocos2D类似,因此,较旧的框架的粉丝肯定可以快速上手。Sprite Kit还拥有一些额外的功能,例如,支持播放视频、制作形状和应用特殊图像效果。

Sprite Kit API设计精良并且易于使用,特别适合于初学者。更好的是,你可以放心地使用,因为它得到了Apple的完全的支持,并且针对iOS上的2D游戏进行了很大程度的优化。

从现在开始,如果你想要开发在iOS、tvOS或MacOS X上运行的2D游戏的话,我们明确地推荐你使用Sprite Kit而不是其他的游戏开发框架。只有一个例外情况,那就是如果你想要开发跨平台的游戏(例如支持Android和Windows等)。Sprite Kit只是Apple的API,因此,要将你的游戏从Sprite Kit迁移到其他的平台上,你所面临的挑战可比使用Unity这样的其他框架大得多。

如果你想要让事情简单化,并且只支持Apple平台,Sprite Kit就是合适的选择。那么,让我们带你快速学习和掌握Sprite Kit吧。需要做的准备

要学习本书中的教程,你需要具备以下条件:

运行OS X Mountain Lion或更高版本的OS的一台Mac计算机。这样,你就可以安装所需的开发工具Xcode的最新版本了。

Xcode 7.3或更高版本。Xcode是iOS的主要开发工具。本书需要使用Xcode 7.3或更高版本。可以从Apple开发者站点下载Xcode的最新版本:https://developer.apple.com/xcode/ download/。

运行iOS 9或更高版本的一个iPhone或iPod Touch,并且还要有付费的iOS开发账号(这是可选的)。

对于本书中的大多数章节,可以在Xcode自带的iOS 9模拟器上运行代码。然而,本书后面有一些章,需要在设备上进行测试。还要注意,Sprite Kit在设备上比在模拟器上表现得更好,因此,当在模拟器中运行游戏的时候,帧速率似乎比预期得要慢。

一台新的Apple TV(可选的)。你并不需要一台新的Apple TV,因为你还是可以使用Apple TV模拟器,但是,用真实的遥控器进行测试肯定是很方便的,在大屏幕上玩游戏多爽啊!

如果你还没有安装最新版本的Xcode,确保先安装它,然后再继续阅读本书。本书的目标读者

本书针对从初级到高级iOS开发者。如果你是本书的目标读者,那么,你将会从本书中学到很多知识。

本书确实需要一些Swift的基础知识。如果你不了解Swift,也可以继续阅读本书,因为所有的介绍都是按部就班的。然而,很可能由于你的知识缺乏而导致对一些部分无法理解。在开始阅读本书之前,最好是先上我们的Swift初学者系列课程,www.raywenderlich.com/store,这个课程介绍了Swift开发的基础知识。如何阅读本书

阅读本书有两种方式,这取决于你是iOS游戏开发的完全初学者,还是具备其他2D游戏框架知识的高级开发者。

如果你是一位完全初学者,阅读本书的最好的方式是从头到尾连续阅读。我们安排章节的时候,是按照最符合逻辑的方式进行的,从介绍性的内容开始,到一次一个层级地构建开发技能。

如果你是一位高级开发者,已经具备了2D游戏框架的知识,你可能会很容易就掌握了Sprite Kit,因为你会很熟悉核心的概念和语法。建议你跳过前面的章节,并专注于后面的、较为高级的章节,或者是你特别感兴趣的章节。本书内容概览

本书分为5个部分,从最基础的主题逐渐进入高级的主题。在每个部分中,我们都将从头创建一个完整的小游戏。本书最后还包括一些额外的章节,我们相信你会喜欢这些内容。让我们来依次看看各个部分的内容:第一部分 基础知识

这一部分介绍了使用Sprite Kit开发2D游戏的基础知识。这些都是最重要的技术,几乎会在你所开发的每一款游戏中用到。学习完这个部分,你就为自己开发简单游戏做好了准备。

在整个这个部分中,我们将创建一款叫做Zombie Conga的、真正的游戏,其中,你将扮演一个无忧无虑的僵尸,它只是想举办舞会,如图1所示。

这个部分一共包括7章,我们将在这部分分步骤地构建这款游戏。图1

第1章 精灵。首先,我们将第1个精灵添加到游戏中,这就是背景和僵尸。

第2章 手动移动。我们将让僵尸跟随你的触摸在屏幕上移动,并且完成2D向量数学基础知识的课程。

第3章 动作。我们将给游戏添加小猫和疯狂的猫女士,以及一些基本的碰撞检测和游戏设置。

第4章 场景。我们将给游戏添加一个主菜单,以及获胜和失败场景。

第5章 相机。我们将让游戏从左向右滚动,并且最后,还要添加其自己的康茄舞队。

第6章 标签。我们将添加标签,以显示僵尸的生命值以及他的康茄舞队中的小猫的数目。

第7章 初识tvOS。我们将让Zombie Conga在tvOS上运行,只需要一些简单的步骤就可以做到这一点。第二部分 物理和节点

在本部分中,我们将学习如何使用Sprite Kit所包含的、内建的物理引擎,来创建类似《愤怒的小鸟》和《割绳子》游戏中的逼真的移动。我们还将学习如何使用特殊类型的节点,以允许在游戏中播放视频或创建形状。

在此过程中,我们将创建一个叫做Cat Nap的物理谜题游戏,其中你扮演一只小猫,它在经过了漫长的一天后只想要上床睡觉,如图2所示。

这个部分一共包括5章,我们将在这部分中分步骤地构建这款游戏。图2

第8章 场景编辑器。我们首先创建了游戏的第一个关卡。最终,我们更好地了解了Xcode的关卡设计器,也更好地了解了场景编辑器。

第9章 物理基础。在本章中,我们打算开一个小差,学习一些为游戏创建物理模拟效果的基础知识。我们还将学习如何在Xcode playground中制作游戏原型。

第10章 中级物理。我们将学习基于物理的碰撞检测,并且为Sprite Kit节点创建定制类。

第11章 高级物理。我们将给这款游戏再添加两个关卡,并在此过程中学习交互性实体、实体之间的接合以及组合实体等。

第12章 裁剪、视频和形状节点。我们将给Cat Nap添加一种新的木头块,在此过程中,将学习一些其他类型的节点,这些节点允许我们做一些惊人的事情,如播放视频、裁剪图像以及创建动态形状。

第13章 中级tvOS。在这部分的最后这一章中,我们将把Cat Nap迁移到tvOS上。我们打算从这款完全开发好的游戏开始,并且为其添加tvOS的支持,以便玩家能够坐在沙发上、使用遥控器轻松地玩这款游戏。第三部分 果汁

在这部分中,我们将学习如何给一款较好的游戏添加大量的特殊效果和体验(即所谓的果汁),将其变成一款伟大的游戏。

在此过程中,我们将创建一款叫做Drop Charge的游戏。游戏中,你是一位太空英雄,肩负着炸毁外星人的太空飞船的任务,并且要在飞船爆炸之前逃生。为了做到这一点,你必须从一个平台跳到另一个平台,一路上收集特殊的激励。但是要小心,不要跌入滚烫的岩浆之中,如图3所示。

这个部分一共包括4章,我们将在这部分中分步骤地构建这款游戏。图3

第14章 开发Drop Charge。我们将使用场景编辑器和代码将基本的游戏逻辑组合起来,发挥出在前面各章中所学的Sprite Kit技术的强大威力。

第15章 状态机。我们将学习什么是状态机以及如何使用它们。

第16章 粒子系统。我们将学习如何使用例子系统来创建惊人的特殊效果。

第17章 点亮游戏。设法给游戏添加音乐、声音和动画,更多的粒子系统和其他特殊效果,让你体验到掌握这些技术细节的好处。第四部分 GameplayKit

在这个部分中,我们将学习如何使用iOS 9的、新的GameplayKit来改进游戏的架构和可重用性,并且还要添加寻路算法和基本的游戏AI。

在此过程中,我们将创建一款叫做Dino Defense的、有趣的塔防攻击游戏。游戏中,你要构建起完美的防御,以保护你的村庄免遭愤怒的恐龙的攻击,如图4所示。

这个部分一共包括3章,我们将在其中分步骤地构建这款游戏。图4

第18章 实体—组件系统。我们将学习使用GameplayKit所提供的、新的GKEntity和GKComponent对象来建模游戏对象所需的所有知识,并且,我们还将使用所学的知识来实现第一个恐龙和塔防。

第19章 寻路算法。我们将使用GameplayKit的寻路功能让恐龙在场景中移动,并且避开障碍物和塔防。

第20章 代理、目标和行为。 最后,我们将给游戏添加另一只恐龙,它将使用GKAgent、GKGoal和GKBehavior对象,以一种更有组织的替代寻路方式在场景中移动。第五部分 高级话题

在本部分中,我们将深入到一些较为高级的话题,例如程序式关卡生成、GameplayKit随机性和游戏控制器等。

在此过程中,我们将构建一款叫做Delve的、基于贴图的地牢探险游戏,其中,你将尝试引导矿工通过一个岩石构成的、充满地下生物的地牢,如图5所示。

这个部分一共包括4章,我们将在这部分中分步骤地构建这款游戏。图5

第21章 贴图地图游戏。我们将学习构建贴图地图关卡的技术,包括如何创建一个功能完整的贴图地图游戏。

第22章 随机性。利用新的GameplayKit类GKRandom,来生成游戏世界。

第23章 程序式关卡。去除掉关卡生成的一些随机性,使得这个过程更具可预测性,但是仍然保持未知的惊险性。

第24章 游戏控制器。这个游戏特别适合使用一个外部的游戏控制器,我们将添加一个tvOS目标,并且探讨如何使用Apple TV遥控器作为游戏控制器。第六部分 额外章节

本书并不是到此为止,在此基础上,我们还提供了一些额外的章节。

在这些章节中,你将学习Sprite Kit之外的一些API,当你开发iOS游戏的时候,了解这些API是很有帮助的。特别是,你将要学习如何向游戏中添加Game Center排行榜和成就,使用新的iOS 9 ReplayKit API,以及给游戏添加iAds。

在此过程中,我们将把这些API加入到一款叫做Circuit Racer的、自上向下滚动的(top-down)赛车游戏中,你在其中扮演一个优秀的赛车手,驾驶汽车去挑战世界纪录,如图6所示。只要不撞到赛道上的围栏,就不会有问题。图6

第25章 Game Center成就。在游戏中打开Game Center,并且当用户完成某些任务的时候给他颁发成就。

第26章 Game Center排行榜。为游戏设置各种排行榜和数据,并且报告玩家的得分。

第27章 ReplayKit。你将学习如何允许玩家使用ReplayKit录制游戏视频并进行分享。

第28章 iAd。我们将学习如何把iAd加入到游戏中,以便能够有一个不错的收入来源。

第29章 写给程序员的2D美工知识。如果你喜欢这些小游戏中的美工图片,并且想要了解如何雇佣一位美术师,或者想要自己制作一些美工,那么,应该阅读本章。本章指导你使用Illustrator绘制一只可爱的小猫。图书源代码和论坛

本书的每一章都带有完整的源代码。其中的一些章节,还有一个初始工程或者其他所需的资源,在阅读本书的时候,你肯定会需要这些内容。

我们为本书建立了一个论坛raywenderlich.com/forums。这是提出和本书相关的问题或者与Sprite Kit开发游戏相关的问题的好地方,也可以在这里提交你所发现的勘误。致谢

感谢很多人为本书的编写过程提供帮助。

感谢我们的家人:你们忍受了我们整夜地工作,以完成本书的写作。

Apple的每一个人:感谢你们开发了这一款令人惊讶的2D游戏框架,以及其他有助于游戏开发的API,感谢你们持续地激发我们改进自己的App和技能,感谢你们使得众多的开发者能够拥有自己梦想的工作!特别感谢Apple TV开发工具包。

感谢Ricardo Quesada:Ricardo是Cocos2D的主要开发者,这个框架使得我们之中的很多人投身到游戏开发中。Sprite Kit似乎从Cocos2D中得到了很多灵感,因此Ricardo也应该得到感激!

最重要的,感谢raywenderlich.com的读者和你。感谢你们访问我们的网站并购买这本书。你的持续阅读和支持,使得这一切成为可能!献辞

献给我的妻子和家人,他们使得我能够做想做的事情。—— Mike Berg

献给家庭生活中真正重要的那些人。给我的妈妈Barbara、姐姐Kimberly、朋友Kelli、女儿Meghan和Brynne,还有我的6个孙子孙女儿。感谢你们的爱和支持。还要献给我已经去世的父亲,我想念您!—— Michael Briscoe

献给我美丽的妻子Batul,还有我的父母。感谢你们对我的支持和信任。—— Kauserali Hafizji

献给我的家人和爱人,你们总是支持我的雄心壮志。—— Neil North

献给Caroline、Nina和Lucy,感谢你们给我不断的鼓励和支持。—— Toby Stephens

献给总是支持和理解我的妻子Agata,还有我的家人。我非常爱你们。—— Rod Strougo

献给我的父母,你们曾经如此的支持我和爱我。献给Mirjam。—— Marin Torodov

献给raywenderlich.com的编辑、作者和译者。团队工作使得你们的梦想更大。—— Ray Wenderlich作者简介

Mike Berg是一位全职的游戏美术师,他很高兴和来自全世界的独立游戏开发者一起工作。当他没有处理像素色彩的时候,他喜欢美食、花时间和家人在一起,以及玩游戏并感受快乐。可以通过www.weheartgames.com找到他的作品。

Michael Briscoe是一位有着30多年经验的独立的软件开发者。他所选择的平台包括Apple的所有产品,从Macintosh到iPhone、iPad和Apple TV。他的专长是开发娱乐性软件,例如游戏和模拟器。可以访问他的Web站点skyrocketsoftware. wordpress.com。

Kauserali Hafizji是一位开发者。他是一位热衷编写代码的程序员,甚至在周末的时候,他也在编程。一本好书,泡个澡,再吃上一顿大餐,对他来说就可以过一个很好的周末了。你可以通过@Ali_hafizji在Twitter上找到他。

Neil North是一位资源管理员、软件开发者和业务自动化专家,他很喜欢开发独立的游戏、从事音频工程,以及帮助其他人实现有创意的目标。他还教授iOS游戏和App开发,并且在Udemy和CartoonSmart上都开设了课程。Neil居住在澳大利亚,你可以访问他的网站apptlycreative.com。

Toby Stephens有20多年的软件开发经验,并且目前是伦敦的inplaymaker移动开发总监。Toby热衷于游戏编程。他还会编写乐曲,并且喜欢烘焙面包。可以通过@TJShae在Twitter上联系他,也可以访问他的网站: tjshae.com。

Rod Strougo从Apple II开始了自己的物理和游戏之旅,开始用Basic编写游戏。Rod的职业生涯有过转型,他花了15年的时间为IBM和AT&T编写软件。在那些日子里,他始终保持着在游戏开发和教学方面的热忱,并且在Big Nerd Ranch等处提供iOS培训。他最初来自巴西的Rio de Janeiro,现在和妻子和儿子一起居住在亚特兰大。

Marin Todorov是一位独立的iOS开发者和作者。他20多年前开始在Apple II上进行开发,并且一直持续到今天。除了编写代码,Marin还喜欢写博客、写书、教学和演讲。他有时候会花时间为开源项目编写代码。他居住在Santiago。可以访问他的Web站点www.underplot.com 。

Ray Wenderlich是一位iPhone应用开发者,也是Razeware LLC的创始人。Ray对于开发App和教授其他人开发App都充满了热情。他和他的教程团队已经编写了很多iOS开发教程,参见www.raywenderlich.com 。

你可能没有注意到本书的所有作者都男的。这很遗憾,但不是故意为之。如果你是一位从事iOS开发的女性,并且有兴趣加入我们的教程团队来编写游戏主题的教程的话,我们求之不得。编辑简介

Tammy Coron是这本图书的技术编辑。她是一位作家、音乐家、美术家和软件工程师。作为一名独立的创意专业人士,Tammy将自己的时间花在开发软件、写作、绘图和提醒其他人“不可能的事情只不过颇费些时日”。她还是Roundabout: Creative Chaos播客的主持人。

Bradley C. Phillips是本书的编辑。他是第一位加入raywenderlich.com的编辑,并且他担任过期刊编辑,之前负责管理纽约的一家调查公司的智能部门。现在,Bradley是一名自由职业者并且从事自己的项目。如果你的博客、图书或者其他产品需要一位专业的、有经验的编辑的话,请联系他。

Ray Wenderlich是本书的最后把关编辑。他是一位iPhone应用开发者,也是Razeware LLC的创始人。Ray对于开发App和教授其他人开发App都充满了热情。他和他的教程团队已经编写了很多iOS开发教程,参见www.raywenderlich.com。美术师简介

Mike Berg创作了本书中的大多数游戏所需的美工。Mike Berg是一位全职的游戏美术师,他很高兴和来自全世界的独立游戏开发者一起工作。当他没有处理像素色彩的时候,他喜欢美食、花时间和家人在一起,以及玩游戏并感受快乐。可以通过www.weheartgames.com 找到他的作品。

Vinnie Prabhu创建了本书中涉及的游戏的所有音乐和声音。Vinnie是北维吉尼亚州的一位音乐作曲家,也是软件工程师,他从事音乐会、戏剧和视频游戏的音乐工作。他也是音乐和视频游戏粉丝的社群OverClocked ReMix的一位成员。你可以通过@palpablevt在Twitter上联系他。

Vicki Wenderlich创作了本书中的大多数插图,以及游戏Drop Charge的美工。Vicki数年前爱上了数字艺术图像,并且从那时候起开始从事App美工和数字图像工作。她很喜欢帮助人们实现梦想,并且为开发者制作App美工。可以访问她的网站:gameartguppy.com。第一部分基 础 知 识

这个部分将介绍使用Sprite Kit制作2D游戏的基础知识。这是一些最重要的技术,几乎在你所制作的每一款游戏中都会用到。当你学习完这个部分,就能够自己制作简单的游戏了。

在整个这一部分中,我们将创建一款名为Zombie Conga的游戏,你负责在游戏中扮演无忧无虑的僵尸,而僵尸只是想参加舞会。第1章 精灵第2章 手动移动第3章 动作第4章 场景第5章 相机第6章 标签第7章 初识tvOS第1章 精灵Ray Wenderlich撰写

既然你已经知道了什么是Sprite Kit以及为什么要使用它,现在我们来自己尝试一下。我们将要构建的第一款小游戏叫做Zombie Conga,其完成后的样子如图1-1所示。图1-1 

在Zombie Conga中,你负责扮演无忧无虑的、只是想参加舞会的僵尸。好在,僵尸所占据的海边小镇有足够多的小猫。你只需要咬住这些小猫,它们就会加入到僵尸的舞队中来。

不过要小心疯狂的猫女士!这些身穿红色的衣服的老太太,对于想要偷走她们心爱的小猫的任何人都会毫不客气,并且会拼尽全力让僵尸平静下来——让它们永久地平静下来。

我们将在接下来的7章中构建这款游戏。

第1章 精灵。你已经开始阅读本章了。我们将开始给游戏添加精灵,主要是一个背景以及僵尸。

第2章 手动移动。我们将让僵尸跟随对屏幕的触摸而移动,并且我们会在本章快速学习基本的2D向量数学。

第3章 动作。把小猫和疯狂的猫女士添加到游戏中,并且添加了基本的碰撞检测和游戏设置。

第4章 场景。我们将给游戏添加一个主菜单,还添加了获胜或失败的画面。

第5章 相机。我们将让游戏从左向右滚动,并且最终添加其自己的康茄舞队。

第6章 标签。我们将添加一个标签来显示僵尸的生命值,以及它所吃到的小猫的数目。

第7章 初识tvOS。我们将让Zombie Conga游戏在tvOS上运行,而这只需要几个简单的步骤就可以做到。

让我们开始开发这个游戏吧!1.1 开始

启动Xcode并且从主菜单中选择File\New\Project...。选择iOS\Application\Game模板,并且点击Next按钮,如图1-2所示。图1-2 

在Product Name字段中输入ZombieConga,在Language栏选择Swift,在Game Technology栏选择SpriteKit,在Devices栏选择Universal,然后点击Next按钮,如图1-3所示。图1-3 

选择想要将工程保存在硬盘上的什么位置,并且点击Create按钮。此时,Xcode将会生成一个简单的Sprite Kit初始工程。

看一下所生成的Sprite Kit工程。在Xcode的工具栏上,选择iPhone 6并点击Play按钮,如图1-4所示。

在一个简短的开始屏幕之后,可以看到一个标签显示“Hello, World!”。当在该屏幕上点击的时候,会出现一个旋转的飞船,如图1-5所示。

在Sprite Kit中,有一个叫做场景的对象,它可以控制你的App的每一个“界面”。场景是Sprite Kit的SKScene类的一个子类。图1-4图1-5 

现在,这个App只有一个单个的场景,就是GameScene。打开GameScene.swift,你将会看到显示这个标签和旋转的飞船的代码。理解这些代码并不是很重要,我们打算完全删除它,并且一步一步地来构建自己的游戏。

现在,删除GameScene.swift中的所有内容,并且用如下的代码替代。import SpriteKitclass GameScene: SKScene { override func didMoveToView(view: SKView) { backgroundColor = SKColor.blackColor() }}

didMoveToView()是Sprite Kit在向你展示一个场景之前所调用的方法,这个方法是对场景的内容进行一些初始设置的好地方。在这里,我们直接将背景颜色设置为黑色。

Zombie Conga设计为以横向模式运行,因此,要为App进行这一设置。从工程导航器中选择ZombieConga工程,然后选择ZombieConga Target。点击General标签页,并且确保只有Landscape Left和Landscape Right选项选中,如图1-6所示。图1-6 

还需要进行一些修改。打开Info.plist并找到Supported interface orientations (iPad)条目。删除在这里所看到的Portrait (bottom home button)和Portrait (top home button)条目,而只保留横向模式的相关选项,如图1-7所示。图1-7 

Sprite Kit模板自动创建了一个名为GameScene.sks的文件。可以使用Xcode内建的场景编辑器来编辑这个文件,以可视化地布局游戏场景。请将这个场景编辑器当做是Sprite Kit的一个简单的Interface Builder。

我们将在本书第7章中介绍场景编辑器,但是我们不会在Zombie Conga游戏中用到它,因为对于这款游戏来说,通过编程来创建精灵要更为容易和直接。

因此,按下Control键并点击GameScene.sks,选择Delete,然后选择Move to Trash。由于不再使用这个文件了,还必须相应地修改模板代码。

打开GameViewController.swift,并且用如下的内容替换它。import UIKitimport SpriteKitclass GameViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let scene = GameScene(size:CGSize(width: 2048, height: 1536)) let skView = self.view as! SKView skView.showsFPS = true skView.showsNodeCount = true skView.ignoresSiblingOrder = true scene.scaleMode = .AspectFill skView.presentScene(scene) } override func prefersStatusBarHidden() -> Bool { return true }}

之前,视图控制器从GameScene.sks加载场景,但是现在,它通过在GameScene上调用一个初始化程序来创建场景。

注意,当创建该场景的时候,通过直接编码为2048×1536的大小,并且将缩放模式设置为AspectFill。现在,很适合介绍一下如何将这款游戏设计为一个通用App。1.1.1 通用App支持 注意本小节是可选的内容,适合那些特别感兴趣的读者。如果你只想要尽可能快地编写代码,可以跳到下一个小节阅读。

我们在本书中的所有游戏都是作为通用的App而设计的,这意味着它们在iPhone和iPad上都能运行。

本书中的这款游戏的场景已经设置为2048×1536,或者说是横屏模式(和竖屏模式相反),其缩放模式设置为AspectFill。AspectFill让Sprite Kit缩放场景的内容以填充整个屏幕,即便Sprite Kit在这么做的时候可能需要裁切一部分内容。

这会导致场景似乎显示于iPad Retina上,而iPad Retina的分辨率是2048×1536,但是,在iPhone上会进行缩放/裁剪以适应手机较小的屏幕以及不同的高宽比。

如下的几个例子,展示了本书中的游戏在不同的设备上的横屏模式显示的样子,包括从最小高宽比到最大的高宽比,如图1-8所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载