如何使用SpriteKit方法体(at:CGPoint)?

时间:2017-07-19 21:04:09

标签: swift sprite-kit

我有游戏,在游戏中你的手指四处移动,应该避免碰到一些障碍。我知道如何使用碰撞,但我最近听说有一个名为body(at : point)的功能。 我应该说我掩盖了我的障碍。因此,我无法使用contains(point)功能。 我真的想使用body(at : point)函数,否则我知道如何处理碰撞。

我的一些代码:

play_button = self.childNode(withName: "play_button") as! SKSpriteNode
for t in touches{
    let fingerlocation = t.location(in: self)
    if physicsworld.body(at : fingerlocation)
    {
        let so = level6(fileNamed:"level6")
        so?.scaleMode = .aspectFill
        self.view?.presentScene(so!, transition: 
        SKTransition.crossFade(withDuration: 1))
    }
}

但它不起作用。

1 个答案:

答案 0 :(得分:2)

physicsworld.body如果找到则返回SKPhysicsBody,所以你只需检查它是否存在

if let _ = physicsworld.body(at : fingerlocation)

如果您的目标是制作按钮,那么我就不会这样做。

我建议只继承SKSpriteNode并启用isUserInteractionEnable`

class Button : SKSpriteNode
{

   override init()
   {
     super.init()
     isUserInteractionEnabled = true
   }
   //then in your touchesBegan/touchesEnded code (wherever you placed it)
   ....
   let so = level6(fileNamed:"level6")
        so?.scaleMode = .aspectFill
        scene.view?.presentScene(so!, transition: 
        SKTransition.crossFade(withDuration: 1))
   ....
}