如何检测是否已触摸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 个回答
-
首先将的
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)