2017-09-15 4 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