Sprite kit 如何更改didbegincontact函数以允许sprite与地面交互。(雪碧套装)

Sprite kit 如何更改didbegincontact函数以允许sprite与地面交互。(雪碧套装),sprite-kit,Sprite Kit,嗨,我需要我的播放器(精灵)与我的地面互动。如果没有didbegincontact函数覆盖并导致游戏结束,我只希望在玩家与帖子碰撞时游戏结束。请在下面查找代码 class GameScene: SKScene, SKPhysicsContactDelegate { override func didMoveToView(view: SKView) { self.physicsWorld.contactDelegate = self let playerGroup: UInt32 = 1

嗨,我需要我的播放器(精灵)与我的地面互动。如果没有didbegincontact函数覆盖并导致游戏结束,我只希望在玩家与帖子碰撞时游戏结束。请在下面查找代码

class GameScene: SKScene, SKPhysicsContactDelegate {

override func didMoveToView(view: SKView) {
self.physicsWorld.contactDelegate = self



let playerGroup: UInt32 = 1
let PostGroup: UInt32 = 2
let groundGroup: UInt32 = 3
var gameOver = "1"

    //player
    player.physicsBody?.categoryBitMask = playerGroup
    player.physicsBody?.collisionBitMask = PostGroup
    player.physicsBody?.contactTestBitMask = postGroup

    //ground.
    ground.physicsBody?.categoryBitMask = groundGroup

    //post.
    post.physicsBody?.categoryBitMask = PostGroup
    post.physicsBody?.contactTestBitMask = playerGroup


func didBeginContact(contact: SKPhysicsContact!) {

    println("contact")
    println("gameOver")
    gameOver = "1"

 override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {

        if (gameOver == "0") {
        player.physicsBody?.velocity = CGVectorMake (0, 0)
        player.physicsBody?.applyImpulse(CGVectorMake(0, 25))

didBeginContact
内部,您需要处理冲突(位掩码就是用来处理冲突的)

skphysiccontact
有两个属性:
bodyA
bodyB
,它们是碰撞中使用的两个实体。这些实体中的每一个都有您先前设置为属性的位掩码。然后,您可以使用位掩码来判断
bodyA
/
bodyB
是接地还是接线柱,然后您可以以不同方式处理它们


如果您需要,这里有详细的说明

非常感谢您的帮助@m321k