Ios 触碰圆形雪碧超大尺寸

Ios 触碰圆形雪碧超大尺寸,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我有一个简单的spritekit项目,在这个项目中,我注意到与我的sprite注册的接触点发生在圆圈物理体之外 在此演示: showPhysics开启时: 生成圆的对象的代码: func spawnObject() { object = SKSpriteNode(imageNamed: "Oval") //object.fillColor = SKColor.white object.name = "ball" object.position = CGP

我有一个简单的spritekit项目,在这个项目中,我注意到与我的sprite注册的接触点发生在圆圈物理体之外

在此演示:

showPhysics开启时:

生成圆的对象的代码:

    func spawnObject() {
    object = SKSpriteNode(imageNamed: "Oval")
    //object.fillColor = SKColor.white
    object.name = "ball"
    object.position = CGPoint(x: 280, y: 520)
    object.physicsBody = SKPhysicsBody(circleOfRadius: object.size.width / 2)
    object.physicsBody!.isDynamic = true
    object.physicsBody!.contactTestBitMask = object.physicsBody!.collisionBitMask
    object.physicsBody?.friction = 0.2
    object.physicsBody?.restitution = 0.2
    object.physicsBody?.mass = 5
    addChild(object)
}
圆圈之间的相互作用非常完美——看起来触碰是异常现象

如有任何帮助,将不胜感激:)

编辑: 触摸代码示例:

 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        if let touch = touches.first {
            let location = touch.location(in: self)
            let tappedNodes = nodes(at: location)

            for node in tappedNodes {
                if node.name == "ball" {
                    node.alpha = 0.5
                }
            }
        }
    }
override func touchsbegind(touch:Set,带有事件:UIEvent?){
如果让触摸=先触摸{
让位置=触摸。位置(in:self)
设tappedNodes=节点(位于:位置)
对于tappedNodes中的节点{
如果node.name==“ball”{
node.alpha=0.5
}
}
}
}

在视图控制器中打开物理视觉表示,看看有什么问题。谢谢你的想法。我添加了一个屏幕截图,显示了它在showPhysics打开时的外观(基本上是一样的——它仍然没有显示正在单击的内容)然后它可能与你如何处理触摸有关。我使用了我在各种教程中看到的似乎非常基本的代码-我在上面编辑过。你可以使用SKPhysicsWorld中的bodyAtPoint或BodySetPoint方法。其他解决方案也不是微不足道的。另外,我不记得这是否是SKShapeNode的工作方式,但即使它的行为与SKSpriteNode不同,它的性能也不好,所以我想这不是您的选择(我看到您在场景中有许多对象)。在视图控制器中打开物理视觉表示,看看有什么问题。感谢您的想法。我添加了一个屏幕截图,显示了它在showPhysics打开时的外观(基本上是一样的——它仍然没有显示正在单击的内容)然后它可能与你如何处理触摸有关。我使用了我在各种教程中看到的似乎非常基本的代码-我在上面编辑过。你可以使用SKPhysicsWorld中的bodyAtPoint或BodySetPoint方法。其他解决方案也不是微不足道的。此外,我不记得这是否是SKShapeNode的工作方式,但即使它的行为与SKSpriteNode不同,它的性能也不好,因此我猜这不是您的选择(我看到您在场景中有许多对象)。