Tag: 汤姆·哈德森

RainCat:第5课

下一个场景 那就对了! 我们正在转移到另一个场景。 实际上,完成后,这将是我们应用程序的第一个屏幕。 创建新场景,将其放置在Scenes文件夹下,并将其命名为MenuScene 。 在MenuScene.swift文件中输入以下代码: 按钮状态! 在SpriteKit中,按钮可能比较棘手。 有很多可用的第三方选项(我甚至自己做了一个),但是从理论上讲,您只需要知道三种触摸方法即可: touchesBegan(_ touches:with event 🙂 touchesMoved(_ touchs:with event 🙂 touchesEnded(_ touches:with event 🙂 我们在更新保护伞时简要介绍了这一点,但是现在我们需要知道:触摸了哪个按钮; 我们是释放水龙头还是单击该按钮; 如果我们仍在触摸它。 这就是我们的selectedButton变量起作用的地方。 当我们开始触摸时,我们可以捕获使用该变量开始单击的按钮。 如果将其拖动到按钮之外,则可以对其进行处理并为其提供适当的纹理。 释放触摸时,我们可以查看是否仍在触摸按钮内部。 如果是,那么我们可以处理与其相关的动作。 将以下代码行添加到MenuScene.swift的底部: 采取行动了! 现在,我们已经掌握了基本的按钮行为,我们需要一个事件来触发它们的点击。 易于实现的按钮是startButton 。 单击时,我们只需要展示GameScene即可 。 将MenuScene.swift函数中的handleStartButtonClick()更新为以下代码: func handleStartButtonClick(){ let transition = SKTransition.reveal(with:.down,duration:0.75) 让gameScene = GameScene(size:size) gameScene.scaleMode = scaleMode view?.presentScene(gameScene,过渡:过渡) } 如果您现在运行该应用程序并按按钮,游戏将开始! 现在我们需要实现静音切换。 我们已经有一个声音管理器,但是现在我们需要能够告诉它是否静音。 […]

RainCat:第2课

创造运动! 我们将更新雨伞以响应触摸。 在GameScene.swift中 ,查看空函数touchesBegan(_ touches :,带有event 🙂和touchesMoved(_ touches :,带有event 🙂 。 在这里,我们将告诉雨伞与游戏进行交互的位置。 如果我们基于当前触摸之一在这两个功能中都设置了伞形节点的位置,它将锁定到位并从屏幕的一侧转移到另一侧。 另一种方法可能是在UmbrellaSprite对象中设置目标,然后在调用update(dt :)时 ,我们可以朝该位置移动。 第三种方法可能是将SKActions设置为在touchesBegan(_ touches :,带有event 🙂或touchesMoved(_ touches :,带有event 🙂上移动UmbrellaSprite ,但是我不建议这样做。 这将导致我们频繁创建和销毁这些SKAction ,并且可能性能不高。 我们将选择选项#2。 更新UmbrellaSprite中的代码,使其看起来像下面的代码: 检测我们的碰撞! 现在,我们不需要担心很多冲突。 我们可能在雨滴,雨滴和雨伞以及雨滴和地板之间发生碰撞。 但是,我们确实需要检测雨滴何时击中了某些东西,因此我们可以告诉它被删除。 我们将需要创建一些变量来对每个SKPhysicsBody进行分类,以便我们找出它们碰撞时该怎么办。 为此,我们应该创建另一个名为Constants.swift的文件。 右键单击“支持”组下的,单击“ 新建文件” >“ Swift文件” ,然后单击“下一步”按钮。 将文件重命名为Constants ,然后单击Create 。 该文件应包含以下代码: 让RainDropCategory:UInt32 = 0x1 << 1 让FloorCategory:UInt32 = 0x1 << 2 让UmbrellaCategory:UInt32 = […]

RainCat:第4课

如何在Swift 3中制作一个简单的SpriteKit游戏 再一次问好! 如果您错过了上一课,可以在这里查看。 如果您没有第3课中的代码,当前可在GitHub上获得。 在上一课中,我们添加了大部分资产,最后使用zPosition属性正确定位了它们。 我们增加了猫的功能,以及在猫掉到屏幕上造成一定危险时重新生成猫的功能。 接下来,我们在屏幕上的任意位置生成食物,但是在屏幕的两侧都留有边距,因此不会太靠近屏幕边缘。 我们为这两个精灵添加了碰撞,并且只在用伞将猫推到那里时,猫才能够收集食物。 也就是说,直到今天! 在本课程中,我们将重点关注: 将猫移向食物 动画猫 遇雨会损坏猫 添加声音效果 添加音乐 获取您的资产! 今天的资产可在GitHub上找到。 就像之前三课中一样,将图像再次拖到Assets.xcassets中 。 稍后我们将添加声音效果和音乐。 让我们继续前进! 让我们的猫动起来并不难。 我们不会通过触摸屏幕来与猫互动,这是我们当前移动雨伞的方式。 相反,猫会根据食物的当前位置移动。 目前,我们的食物精灵已添加到场景中并被遗忘,但是每次调用更新时我们都需要知道食物的确切位置,以使猫指向正确的方向移动。 回到我们的GameScene.swift ,让我们在文件顶部的本地cat变量下面添加一个变量: 私人食品:FoodSprite! 然后,我们可以更新spawnFood函数以在每次生成食物时设置此变量。 在spawnFood函数中,替换为: 让食物= FoodSprite.newInstance() 与: 食物= FoodSprite.newInstance() 这会将food变量的范围从spawnFood函数更改为GameScene文件的范围。 现在,我们需要编辑CatSprite文件,以了解它朝食物移动的方向。 要获得食物,我们需要知道我们可以朝着什么速度前进。 在CatSprite.swift文件的顶部,我们可以在newInstance函数上方添加以下代码行。 私人让步速度:CGFloat = 100 这条线是我们的移动速度,它是对非常复杂的问题的非常简单的解决方案。 我们在这里仅使用一个简单的线性方程,而忽略了摩擦或加速度会带来的任何复杂性。 现在,我们需要使用update(deltaTime 🙂方法做一些事情。 因为我们将知道食物在哪里,所以我们需要朝该位置移动。 用以下代码替换CatSprite.swift中的更新函数: 接下来,我们可以添加行走动画! 之后,我们将向后转圈以修复猫受到打击后的旋转。 您可能已经注意到,有一个名为“ cat_two”的未使用资产。 我们需要拉动该纹理并将其交换出去,以使其看起来就像猫在走路。 为此,我们将添加第一个SKAction! […]