我的精灵非常小,所以偶尔水龙头不是很准确。我想知道如何只增加精灵周围的区域以进行触摸识别,这样物理学等其他东西不会受到影响?
例如,假设我的精灵大小为40x40,并且我希望对于给定的精灵,可以通过更大的60x60区域识别触摸。
请参阅以下代码:
func singleTapHandler(recognizer:UITapGestureRecognizer){
let locationInView = recognizer.location(in: self.view)
let locationInScene = self.convertPoint(fromView: locationInView)
print(locationInScene)
let node = atPoint(locationInScene)
if let nodeName = node.name {
if nodeName = "group1" {
fliesGroup1.changePosition()
}
}
}
更新
根据Hola的回答,我做了以下操作来创建我的空SKNode,但是当我使用flyTouchName
检查场景中的位置时,上面的代码无法识别它。
var touchNode = SKNode()
touchNode.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: 60, height: 60))
touchNode.physicsBody?.collisionBitMask = 0
touchNode.isUserInteractionEnabled = true
touchNode.physicsBody?.contactTestBitMask = 0
touchNode.name = flyTouchName
fly.addChild(touchNode)
答案 0 :(得分:2)
您可以创建一个空的SKNode,设置它的尺寸,启用用户交互,并将其添加为精灵的子项。
然后使用该节点作为输入处理程序。