如何检测是否已触摸SKSpriteNode

发布于 2021-01-31 23:52:53

我试图检测我的sprite节点是否已被触摸并且我不知道从哪里开始。

let Pineapple = SKSpriteNode(imageNamed: "Pineappleimg")
Pineapple.userInteractionEnabled = true
Pineapple.position = CGPoint(x: CGRectGetMidX(self.frame) - 200, y: CGRectGetMidY(self.frame));
self.addChild(Pineapple)
关注者
0
被浏览
114
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    首先将的name属性设置SKSpriteNode为字符串。

    pineapple.name = "pineapple"
    pineapple.userInteractionEnabled = false
    

    然后在touchesBegan功能上Scene

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        let touch:UITouch = touches.anyObject()! as UITouch
        let positionInScene = touch.locationInNode(self)
        let touchedNode = self.nodeAtPoint(positionInScene)
    
        if let name = touchedNode.name
        {
            if name == "pineapple"
            {
                print("Touched")
            }
        }
    
    }
    

    这是一种方法。
    您也可以继承SKSpriteNode并覆盖其中的touchesBegan内部。

    class TouchableSpriteNode : SKSpriteNode
    {
        override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
            print("touched")
        }
    }
    

    然后做

    let pineapple = TouchableSpriteNode(imageNamed: "Pineappleimg")
    pineapple.userInteractionEnabled = true
    pineapple.position = CGPoint(x: CGRectGetMidX(self.frame) - 200, y: CGRectGetMidY(self.frame));
    self.addChild(pineapple)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看