2017-07-19 56 views
2

我有遊戲,在遊戲中你的手指四處移動,應該避免碰到一些障礙物。我知道如何使用碰撞,但我最近聽說有一種叫做body(at : point)的功能。 我應該說我掩蓋了我的障礙。因此,我不能使用contains(point)函數。 我真的想使用body(at : point)函數,否則我知道如何處理碰撞。如何使用SpriteKit方法體(at:CGPoint)?

我的一些代碼:

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)) 
    } 
} 

,但它不工作。如果發現

回答

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)) 
    .... 
} 
+0

我想用身體(在:點)怎麼一回事,因爲是新手,我不知道如何使用子類 所以如果可能請給我一個示例代碼,以便使用body(at:point)。 正如我所說我想要做某些動作時,用戶觸摸該精靈或按鈕的蒙面區域 –

+0

我已經給你的代碼 – Knight0fDragon

+0

,但它不適用於蒙面對象? –