加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 如何在sprite工具包中复制sprite并使它们的行为不同

发布时间:2020-12-14 04:50:28 所属栏目:百科 来源:网络整理
导读:我一直在研究 IOS手机游戏,我想拿一个对象,复制它,让副本在整个屏幕上移动.我已经通过谷歌查找了与此相关的内容,但它们都是在Objective C中,或者只是没有我想要的东西.我想知道如何在 Swift和SpriteKit中执行此操作. 解决方法 如果您正在使用SKSpriteNode,您
我一直在研究 IOS手机游戏,我想拿一个对象,复制它,让副本在整个屏幕上移动.我已经通过谷歌查找了与此相关的内容,但它们都是在Objective C中,或者只是没有我想要的东西.我想知道如何在 Swift和SpriteKit中执行此操作.

解决方法

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

let copiedNode = nodeToCopy.copy() as! SKSpriteNode

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

请注意,协议NSCopying的文档准确读取:

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来说,因为它确实是一个游戏引擎,它是那里唯一有意义的复制感.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读