【问题标题】:Adding multiple instances of objects spritekit swift 3添加对象的多个实例 spritekit swift 3
【发布时间】:2017-05-23 01:01:09
【问题描述】:

我正在尝试添加我的对象(子弹)的多个实例,以便玩家可以射出子弹,然后再射出另一颗子弹。我正在使用以下代码,但它给了我一个线程 1 信号 sigbart 错误。有人可以解释一下代码有什么问题吗?谢谢!

            let bulletmove = SKAction.moveTo(y: self.frame.height, duration: 2)

            let bulletremove = SKAction.removeFromParent()

            addChild(bullett)

            bullett.run(SKAction.sequence([bulletmove, bulletremove])) 

【问题讨论】:

  • 子弹也是一个 SKSpriteNode 并且是一个彩色精灵,而不是图像
  • “bullett”指的是什么?每次运行此代码 sn-p 时,您是否都创建一个新的项目符号对象?
  • 您需要显示创建项目符号的代码部分。
  • var bullet = SKSpriteNode()
  • 并在我确实移动到视图中:bullett = self.childNode(withName: "bullett") as! SKSpriteNode

标签: swift object sprite-kit multiple-instances sknode


【解决方案1】:

如果您多次添加 SKSprite,则会发生错误。

您需要做的是创建一个 SKSpritenode 以每次添加。你可以有一个函数来做每次创建子弹

func addBullet(){

var bullet = SKSpriteNode(imagenamed: "bullet")
bullet.position = //Give the point of origin as CGPoint. Maybe same as the shooter..
addChild(bullet)
bullet.run(SKAction.moveTo(y: self.frame.height, duration: 2))

}

所以每次调用 addBullet() 时,也许在 touches 开始时,您可以创建新的子弹,移动到屏幕末尾而不会崩溃。 所以重点是每个 addChild 都有 var bullet = SKSpriteNode(imagenamed: "bullet")。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    相关资源
    最近更新 更多