【问题标题】:touchesBegan on a node to delete ittouchesBegan 在一个节点上删除它
【发布时间】:2026-02-06 14:05:02
【问题描述】:

例如,我在名为“generateNode”的函数中每秒生成一个 SKSpriteNode,我想在 touchesBegin 函数中调用它来检测用户何时触摸它,如果用户触摸它,则删除该节点.

我试图在这个函数中调用节点,但是不可能,Xcode在这个函数中没有检测到它。

怎么做?

谢谢。

【问题讨论】:

  • 到目前为止你有没有做过的代码?

标签: swift sprite-kit skspritenode touchesbegan


【解决方案1】:

您可以通过以下方式删除特定节点。

首先在你添加的地方设置node.name属性。

func generateNode() {
    // your node creation code
    node.name = "generatedNode"
    //add your node.
}

然后在touchesBegan中,如果节点的名字是你设置的名字,你可以移除被触摸的节点。

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {

    let touch = touches.anyObject() as UITouch?
    if let location = touch?.locationInNode(self)
    {
        for node in self.nodesAtPoint(location)
        {
            if node.name == "generatedNode"
            {
                node.removeFromParent()
            }
        }

    }
}

【讨论】:

    最近更新 更多