2017-09-15 53 views
1

我希望爲我的遊戲添加通電,但是當我的精靈擊中加電精靈時,它會將他拋出課程,因爲遊戲已經註冊了一個碰撞,我猜想物理學會發揮作用,當我點擊屏幕我的精靈在空中跳躍,擊中加電並停止移動並再次跌落。讓SKSprites註冊衝突,但不會互相影響

我需要精靈跳起來,收集加力精靈和得分上升(得分上漲的代碼完成),但我不知道如何使2個精靈沒有註冊碰撞。

//Create the PowerUp Coin to add score 
func createCoin() { 

    coinPlus5 = SKSpriteNode(imageNamed: "coin1") 
    coinPlus5.name = "coinPlus5" 
    coinPlus5.position.x = self.frame.size.width*2.6 
    coinPlus5.position.y = CGFloat.randomBetweenNumbers(firstNum: -(self.frame.size.height/2.8), secondNum: (self.frame.size.height/2.4)) 
    coinPlus5.zPosition = 11 
    coinPlus5.size = CGSize(width: 50, height: 50) 
    hitPowerup = false 

    // Add Physics Bodys 
    coinPlus5.physicsBody = SKPhysicsBody(texture: coinPlus5.texture!, size: CGSize(width: coinPlus5.size.width, height: coinPlus5.size.height)) 


    //enemyBird1.physicsBody = SKPhysicsBody(circleOfRadius: self.size.height/13) 
    coinPlus5.physicsBody?.allowsRotation = false 
    coinPlus5.physicsBody?.affectedByGravity = false 
    coinPlus5.physicsBody?.isDynamic = false 
    // Add Collision Bitmasks 
    coinPlus5.physicsBody?.categoryBitMask = ColliderType.Pipes 

和字符精靈代碼:

func initialise() { 

    self.name = "Bird" 
    self.zPosition = 3 
    self.size = CGSize(width: 130, height: 110) 
    self.anchorPoint = CGPoint(x: 0.5, y: 0.5) 






    self.physicsBody = SKPhysicsBody(texture: self.texture!, 
            size: CGSize(width: self.size.width, 
                height: self.size.height)) 

    // Add Physics Bodys 
    self.physicsBody?.allowsRotation = false 
    self.physicsBody?.affectedByGravity = false 
    self.physicsBody?.mass = CGFloat(-100) 
    // Add Collision Bitmasks 
    self.physicsBody?.categoryBitMask = ColliderType.Bird 
    self.physicsBody?.collisionBitMask = ColliderType.Ground | ColliderType.Pipes 
    self.physicsBody?.contactTestBitMask = ColliderType.Ground | ColliderType.Pipes | ColliderType.Score 


} 

回答

1

目前你的硬幣的物理類是ColliderType.Pipes。你已經設置了鳥的collisionBitMask與地面和管道碰撞(ColliderType.Ground | ColliderType.Pipes)。這意味着你的玩家將與硬幣發生物理碰撞。

要解決這個問題,你可能需要一個新的硬幣對撞機類型。您需要硬幣成爲玩家的一部分contactTestBitMask,以便您可以檢測玩家何時獲得一枚硬幣,但不是部分玩家的collisionBitMask,因此它們不會影響您的物理效果。

+1

這工作完美! – LukeTerzich

+0

太棒了!祝你好運。 – nathan