gpt4 book ai didi

swift - 如何在 sprite kit 中复制一个 sprite 并让它们表现不同

转载 作者:搜寻专家 更新时间:2023-10-31 08:13:58 25 4
gpt4 key购买 nike

我一直在开发一款 IOS 手机游戏,我想复制一个对象,然后让副本在整个屏幕上移动。我通过谷歌查看了与此相关的内容,但它们都在 Objective C 中,或者只是没有我要找的东西。我想知道如何在 Swift 和 SpriteKit 中做到这一点。

最佳答案

如果您正在使用 SKSpriteNode,您可以复制它及其所有当前属性:

let copiedNode = nodeToCopy.copy() as! SKSpriteNode

您仍然需要将 copiedNode 添加到您的场景中。 copiedNode 还将继续运行 nodeToCopy 正在运行的任何操作。您可以使用 copiedNode.removeAllActions() 取消它们。


请注意,NSCopying 协议(protocol)的文档内容如下:

Protocol

NSCopying

A protocol that objects adopt to provide functional copies of themselves.

The exact meaning of “copy” can vary from class to class, but a copy must be a functionally independent object with values identical to the original at the time the copy was made...

事实上,在 SKSpriteNode 的情况下,Apple 已经解释了这个想法,以便 copy() 函数“生成”该项目的另一个实例,正是与任何游戏引擎一样

(因此,对于 SKSpriteNode,copy() 的工作方式与 Unity 中的 Instantiate 的意义相同,例如。)

正如 mogelbuster 在下面指出的那样,在 Apple 文档中没有任何地方声明 “Apple 中的 spawn 命令是 copy()” 但实际上他们已经解释了这个“的确切含义”对于 SKNode 来说,copy” 可以因类而异”,因为它确实是一个游戏引擎,而且它是那里唯一有意义的复制意义。


值得注意的是,在游戏中最典型的工作方式是:对于您所说的 rocketShips,您将拥有一个 rocketShip“模型”,例如 modelRocketShip。 模型只是位于屏幕外,或者可能被标记为不可见或不活动。您永远不会在游戏中使用该模型,它只是坐在那里。当您生成 rocketShips 时,您只是在欺骗模型。 (所以在 Apple 中是 modelRocketShip.copy() 然后设置位置等)

关于swift - 如何在 sprite kit 中复制一个 sprite 并让它们表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36073940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com