- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 SpriteKit .sks 文件 我可以将 .sks 中的 Sprite 制作成 SKSpriteNode 子类的实例吗?
这是我的子类中的 init 方法:
init(imageNamed: String) {
let blockTexture = SKTexture(imageNamed: imageNamed)
super.init(texture: blockTexture, color: nil, size: blockTexture.size())
}
var myObj = Block(imageNamed: "Block")
myObj = childNodeWithName("block1") as Block
最佳答案
这里有几个问题需要解决.......sks
加载如何工作
当您加载 .sks
文件时,SpriteKit 会使用 NSKeyedUnarchiver
实例化其中的所有内容。这意味着里面的所有节点都被加载为 Xcode 在创建 .sks
文件时指定的任何基类 - SKSpriteNode
用于具有纹理艺术的 Sprite ,SKLabelNode
用于文本,SKFieldNode
用于物理场等。目前 Xcode 没有提供一个选项来为 .sks
文件中的节点设置自定义类。
(对此的一个异常(exception)是更改场景本身的运行时类 — .sks
文件中所有内容的顶级容器。这只是因为项目模板中为您提供的自定义 SKNode.unarchiveFromFile
实现。它在以下位置更改类的技术当存档中只有一个特定类的一个实例时,加载时间有效——对 SKScene
有利,对场景中的许多节点不利。)
类型转换的工作原理
当你写这样的东西时:
myObj = childNodeWithName("block1") as Block
childNodeWithName
得到的东西吗?你只知道它是一个
SKNode
,但我知道它真的是一个
Block
,所以请让我调用
Block
方法(编译器说,“好吧,随便吧。”)
Block
,否则你的应用程序会崩溃,因为你试图用不是
Block
的东西做一些
Block
y 的事情。而且,根据上面加载的
.sks
位,那个东西不是也不能是
Block
— Xcode 不知道如何将
Block
放入
.sks
文件中。所以你不能从中得到
Block
,所以你的应用程序肯定会崩溃。
.sks
文件中,您能做什么?这在一定程度上取决于您究竟要完成什么。但是有一个很好的技巧,通常也可能是好的游戏/应用程序设计:使用
.sks
文件进行一般布局和配置,并使用第二遍引入需要自定义行为的东西。
.sks
文件包含
Plumber
类的实例——该类可能有很多关于高度或高度的详细信息这个人很胖,他跳多高, mustache 的形状等等,你不想每次创建新关卡时都重新设置,更不用说在每个关卡的
.sks
文件中再次保存它们.相反,在每个级别文件中您真正需要知道的唯一事情是他开始的位置。因此,在 Xcode 中拖出一个“空节点”,并在加载时,将该节点替换为
Plumber
类的实例,如下所示:
let spawnPoint = childNodeWithName("spawnPoint")
let player = Plumber()
player.position = spawnPoint.position
addChild(player)
spawnPoint.removeFromParent()
.sks
文件中设置更多配置详细信息,则可以考虑自动化该过程。
replaceNode(_:withNode:)
之类的东西。)SKNode
或 SKSpriteNode
,并让它从该节点设置其所有继承属性(或至少您关心的属性,如颜色和纹理)。 enumerateChildNodesWithName:usingBlock:
和 search pattern 查找场景中具有某种名称的所有节点,并将它们替换为使用初始化程序创建的新节点。就像是:enumerateChildNodesWithName("//brick_[0-9]*") { node, stop in
self.replaceNode(node, withNode: BrickBlock(node))
}
enumerateChildNodesWithName("//question_[0-9]*") { node, stop in
self.replaceNode(node, withNode: QuestionBlock(node))
}
关于swift - .sks 文件中 SKSpriteNode 的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27908165/
我正在创建一个游戏,用户可以在场景中移动一些水果。我希望用户只能移动场景中的水果,而不能移动场景中的任何其他 SKSpriteNode,因此我编写了下面的代码来实现它。然而,代码无法正常工作,因为我似
我正在尝试制作一款游戏,您可以倾斜手机并尝试将球保持在边界内。我似乎无法弄清楚如何让球不通过边界。我有倾斜来移动球,但它只是穿过我的所有边界,我似乎无法弄清楚如何让球在接触到边界时停止。这是我的代码:
我的代码遇到了一些问题。我正在尝试使用以下代码让僵尸跟随我的玩家: class GameScene: SKScene, SKPhysicsContactDelegate { func Enem
我正在尝试将一个 sprite 节点旋转到另一个。它旋转但不好。我该如何解决? 我试过: let blaster = self.childNode(withName: blaster) let cur
我如何获取一个 SKSpriteNode 及其所有子 SKSpriteNode 并将它们合并为一个没有子节点的扁平化 SKSpriteNode? 谢谢。 最佳答案 创建节点的纹理并从该纹理创建一个新的
对于我正在创建的游戏,SKSpriteNode 逐渐向下移动到用户屏幕上。屏幕底部附近还有另一个 SKSpriteNode(位置是静态的),只为原始 SKSpriteNode 留出一点空间。我需要检测
使用 swift,我试图让一个 SKSpriteNode(没有物理体)跟随另一个有物理体的 SKSpriteNode。当 Sprite 与一个物理体和另一个物理体接触时,我希望这样做。我阅读了有关设置
我有一条拿着蛋的龙。 EggNode 是 DragonNode 的子节点。 龙水平飞过屏幕。 当龙到达屏幕最右侧时,龙会重置到屏幕最左侧。 我已经实现了龙将鸡蛋扔到地面炮塔的位置。龙使用这个函数在to
/image/JQ9r6.png 在上面您可以看到我的游戏的图像。我有敌人生成并沿 y 轴向下移动。玩家应该在敌人到达墙壁之前将其击落。现在,玩家正在旋转到触摸的位置。我想要的是让子弹的旋转方向与旋转
我试图弄清楚 SKSpriteNode 已完全迭代另一个 SKSpriteNode。 这是我迄今为止想出的代码, if (node.frame.maxY == player.frame.minY) {
正如标题所说,有没有办法做这种事情: 有什么办法吗?如果是这样,我如何将 SKAction rotateToAngle 对应到面向圆的一侧? 谢谢! 最佳答案 圆在任何给定点的切线垂直于绘制到该点的半
对于令人困惑的问题标题,我深表歉意,但我不太确定如何表述我的问题。我的最终目标是在创建 SKSpriteNode 一定时间后删除它。但是,有一个小并发症。使用以下代码 func remove() {
我正在制作一个球必须遵循特定路径的游戏。如果它偏离正轨,他们就输了。问题是我不知道如何测试球是否偏离了路径。我尝试使用 node.intersectsNode(background) 但由于背景覆盖了
就问标题问,我想知道这是否完全可能。大多数 SKCropNode 示例使用纹理或形状。我想要完成的是自定义形状的面具。如果有办法,请告诉我! 最佳答案 您可以通过为节点提供一个子节点来屏蔽节点,其中子
这里的代码子类化 SKSpriteNode 并初始化它接受 SKScene import SpriteKit class Spaceship: SKSpriteNode{ var spaceship:
我的目标:让一个 SKSpriteNode 移动到另一个 SKSpriteNodes 的位置。 (为我的 sprite kit 游戏创建磁铁) 嗨,我正在尝试让多个同名的 SKSpriteNode 移
我正在使用 Xcode 开发应用程序,目前遇到有关 SKSpriteNodes 的问题。当有多个 SKSpriteNode 且该节点被触摸时,被触摸的节点不会被移除,但另一个未被触摸的节点会被移除。我
我有一个 SKScene,我要在其中添加一个 SKSpriteNode。我已经子类化 SKSpriteNode 类来创建这个节点。在子类中,我在 Sprite 上定义了某些 SKActions。我想要
我需要在我的项目中检测接触,但我有 9 个方 block 要检测接触。有没有一种方法可以在不创建 9 个不同的物理体或类似物理体阵列的情况下检测接触。此外,每当圆圈接触到一个正方形时,该正方形就会变色
我的游戏中有一个角色,它是一个带有几个子 SKSpriteNodes 的 SKSpriteNode,因此我可以为角色的各个部分(手、脚等)设置动画,它还有 1 个 SKSpriteNode(尝试用 S
我是一名优秀的程序员,十分优秀!