第一章:精灵

现在你知道 SpriteKit 是什么,以及为什么要使用它,是时候亲自尝试了!
你将在这本书中建立的第一个小游戏叫僵尸康茄(Zombie Conga)。 下面是完成后的样子:

Sprites-1.png

在僵尸康茄中,你会扮演一个想参加派对的快乐僵尸!

幸运的是,你所占据的海滩拥有很多猫咪。你只需要咬它们,它们就会加入你的康茄队伍。

但要注意疯狂的猫主人!这些穿着红色衣服的女人,不允许任何人偷偷摸摸地碰她们的猫咪,她们会尽全力消灭僵尸。

你将在接下来的六章中分阶段构建这个游戏:

  1. 第一章,精灵:你现在在这一章!通过添加精灵来开始制作游戏的旅程:背景和僵尸。

  2. 第二章,跟随手指移动:你会让僵尸跟随你的手指在屏幕上移动,学习基础的2D矢量数学知识。

  3. 第三章,动作:你将猫和疯狂的猫主人加入游戏,以及基础的碰撞检测和游戏玩法。

  4. 第四章,场景:你将在游戏中添加一个主菜单,以及胜利和失败的场景。

  5. 第五章,镜头:你将使游戏从左到右滚动,最后添加康茄队伍。

  6. 第六章,标签:你会添加标签来显示僵尸的生命值和他的康茄队伍中猫咪的数量。

是时候开始康茄了!

开始

启动 Xcode 并从主菜单中选择 File > New > Project。 选择 iOS /Application/Game 模板,然后单击 Next。

Sprites-2.png

输入 ZombieConga 作为 Product Name,选择 Swift 作为 Language,SpriteKit 作为 Game Technology,然后单击 Next。

Sprites-3.png

选择硬盘上的某个位置来保存项目,然后单击 Create。 这时,Xcode 将为你生成一个简单的 SpriteKit 初始项目。

看看 SpriteKit 做了什么。 在 Xcode 的工具栏中,选择 iPhone 8 Plus 并单击 Play。

Sprites-4.png

在简短的启动画面之后,你会看到一个标签,上面写着“Hello, World!”。 当您将鼠标拖过屏幕时,文字将会弹起,并出现一些旋转的圆角矩形。

Sprites-5.png

在 SpriteKit 中,称为场景的单个对象控制着你应用的每个“屏幕”。 场景由 SpriteKit 的 SKScene 类表示。

现在,这个应用程序只有一个场景:GameScene。 打开 GameScene.swift,你会看到显示标签和旋转的圆角矩形的代码。

现在无须理解这些代码 —— 你将会把它们全部删除,逐步地构建你的游戏。

现在,删除 GameScene.swift 中的所有内容,并将其替换为:

import SpriteKit

class GameScene: SKScene {
  override func didMove(to view: SKView) {
    backgroundColor = SKColor.black
  }
} 

请注意,GameScene 是 SKScene 的一个子类。 SpriteKit 在视图中呈现场景之前调用方法 didMove(to:); 这是对场景内容进行初始设置的地方。 在这里,你只需将背景颜色设置为黑色即可。

僵尸康茄被设计为在横屏模式下运行,所以你需要为此配置。 在项目导航栏中选择 ZombieConga project,然后选择 ZombieConga target。 转到 General 选项卡,确保只选中了 Landscape Left 和 Landscape Right。

你在这里同时选中 Requires full screen 选框。 如果你想创建一个只支持横屏的应用程序,并且表示这个游戏不会提供多窗口支持,那么这是必需的。

Sprites-6.png

你还需要进行一项配置,以便应用程序可以在 iPad 上以横屏模式运行。 打开 Info.plist 并找到 Supported interface orientations (iPad)。 删除 Portrait(bottom home button) 和 Portrait(top home button),只保留横屏选项。

SpriteKit 项目模板会自动创建一个名为 GameScene.sks 的文件。 你可以使用 Xcode 的内置场景编辑器来编辑这个文件,以可视化的方式布置你的游戏场景。 将场景编辑器想象成一个简单的 Interface Builder。

你将在第七章“场景编辑器”中了解关于场景编辑器的信息,Zombie Conga 中你不会使用它,因为通过编写代码的方式创建精灵更容易且更有启发性。

按住 Control 键单击 GameScene.sks,选择 Delete,然后选择 Move to Trash。 同时,也删除 Actions.sks,在这个游戏中你不需要这个文件。

由于你不再使用这些文件,因此你必须适当修改模板代码。

打开 GameViewController.swift 并替换成下面的内容:

import UIKit
import SpriteKit

class 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 var prefersStatusBarHidden: Bool {
    return true
  }
}

之前,视图控制器从 GameScene.sks 中加载场景,而现在通过调用 GameScene 上的初始化方法来创建场景。

请注意,当你创建场景时,你将使用 2048x1536 大小的尺寸,并将缩放模式设置为 aspectFill。

现在快速讨论下如何设计这款游戏以支持各种型号的设备。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容