簡體   English   中英

SpriteKit:如何防止兩個SKSpriteNode沖突(在Swift中)

[英]SpriteKit: How to prevent two SKSpriteNodes from colliding (in Swift)

我正在制作一個由玩家,障礙物和硬幣組成的相對簡單的游戲。 我的目標是僅使障礙物與玩家之間發生碰撞,並使玩家與硬幣之間發生接觸以觸發didBeginContact

這是一些代碼:

//declare categoryBitMasks
struct physicsCategories {
    static let playerCategory : UInt32 = 1
    static let coinCategory: UInt32 = 2
    static let obstacleCategory : UInt32 = 3 
}

//assign physics categories 
playerNode!.physicsBody?.categoryBitMask = physicsCategories.playerCategory
playerNode!.physicsBody?.collisionBitMask = physicsCategories.obstacleCategory
playerNode!.physicsBody?.contactTestBitMask = physicsCategories.coinCategory


obstacleNode.physicsBody?.categoryBitMask = physicsCategories.obstacleCategory
obstacleNode.physicsBody?.collisionBitMask = physicsCategories.playerCategory
obstacleNode.physicsBody?.contactTestBitMask = 0


coinNode.physicsBody?.categoryBitMask = physicsCategories.coinCategory
coinNode.physicsBody?.collisionBitMask = 0
coinNode.physicsBody?.contactTestBitMask = physicsCategories.playerCategory

didBeginContact函數從視圖中刪除硬幣,並向用戶貨幣庫添加一個。 當玩家擊中硬幣時會調用此函數,但是在取出硬幣之前會發生碰撞。 碰撞非常破壞游戲玩法,我一直無法找到可行的解決方案。 有什么建議么?

您的問題是類別,搜索位掩碼的工作方式。 你不能做1,2,3他們必須是2的冪; 0x1 << 0,0x1 << 1,0x1 << 2等

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM