如何仅为触摸识别增加精灵区域?

时间:2017-03-12 05:29:22

标签: swift swift3 sprite-kit

我的精灵非常小,所以偶尔水龙头不是很准确。我想知道如何只增加精灵周围的区域以进​​行触摸识别,这样物理学等其他东西不会受到影响?

例如,假设我的精灵大小为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)

1 个答案:

答案 0 :(得分:2)

您可以创建一个空的SKNode,设置它的尺寸,启用用户交互,并将其添加为精灵的子项。

然后使用该节点作为输入处理程序。