Ios 多次碰撞或吸毒
我有两种类型的碰撞。第一种是宇宙飞船和小行星(这已经处理好了),但我无法处理第二种碰撞,我的宇宙飞船雷泽撞上了敌人的宇宙飞船。在第二种情况下,我有吸毒/多次碰撞或有时完美碰撞 我的敌人空间是一个敌人空间类,它是SKSpriteNode的一个子类 所以问题是关于第二次碰撞。Is有多个意外的碰撞。我怎么能修好它Ios 多次碰撞或吸毒,ios,sprite-kit,Ios,Sprite Kit,我有两种类型的碰撞。第一种是宇宙飞船和小行星(这已经处理好了),但我无法处理第二种碰撞,我的宇宙飞船雷泽撞上了敌人的宇宙飞船。在第二种情况下,我有吸毒/多次碰撞或有时完美碰撞 我的敌人空间是一个敌人空间类,它是SKSpriteNode的一个子类 所以问题是关于第二次碰撞。Is有多个意外的碰撞。我怎么能修好它 func didBeginContact(contact: SKPhysicsContact) { if contact.bodyA.categoryBitMask == Co
func didBeginContact(contact: SKPhysicsContact) {
if contact.bodyA.categoryBitMask == CollisionCategories.PlayerSpaceShip && contact.bodyB.categoryBitMask == CollisionCategories.Asteroid || contact.bodyB.categoryBitMask == CollisionCategories.PlayerSpaceShip && contact.bodyA.categoryBitMask == CollisionCategories.Asteroid {
if !gameOver && !playerWasHit {
playerWasHit = true
self.pauseTheGame()
//spaceShip vs asteroid animation
let fadeOutAction = SKAction.fadeOutWithDuration(0.1)
fadeOutAction.timingMode = SKActionTimingMode.EaseOut
let fadeInAction = SKAction.fadeInWithDuration(0.1)
fadeInAction.timingMode = SKActionTimingMode.EaseOut
let blinkAction = SKAction.sequence([fadeOutAction, fadeInAction])
let blinkRepeatAction = SKAction.repeatAction(blinkAction, count: 3)
let delayAction = SKAction.waitForDuration(0.2)
let gameOverAction = SKAction.runBlock({ () -> Void in
self.gameSettings.lives--
self.gameDelegate?.gameDelegateDidUpdateLives()
if self.gameSettings.lives > 0 {
self.respawn()
} else {
self.gameSettings.recordScores(self.gameSettings.currentScore)
self.gameDelegate?.gameDelegateGameOver(self.gameSettings.currentScore)
self.gameOver = true
self.pauseTheGame()
}
})
let gameOverSequence = SKAction.sequence([blinkRepeatAction, delayAction, gameOverAction])
spaceShipLayer.runAction(gameOverSequence)
}
if soundOn {
let hitSoundAction = SKAction.playSoundFileNamed("hitSound.wav", waitForCompletion: true)
runAction(hitSoundAction)
}
//second case playerLazer vs enemySpaceShip
} else if contact.bodyA.categoryBitMask == CollisionCategories.PlayerLaser && contact.bodyB.categoryBitMask == CollisionCategories.EnemySpaceShip || contact.bodyB.categoryBitMask == CollisionCategories.PlayerLaser && contact.bodyA.categoryBitMask == CollisionCategories.EnemySpaceShip {
contact.bodyA.node?.removeFromParent()
contact.bodyB.node?.removeFromParent()
}
}
我发现这个决定让一切变得完美: 第二部分应该是这样的: 如果
所以我做了。None categoryBitMask并在碰撞检测后应用它,所以现在点和spriteNode行为是正确的 你的问题是什么?你说的是你所拥有的,但在你的文本中甚至没有一个问号。“你想知道什么?”我被打扰了,忘了添加。非常感谢。
contact.bodyA.categoryBitMask == CollisionCategories.PlayerLaser &&
contact.bodyB.categoryBitMask == CollisionCategories.EnemySpaceShip ||
contact.bodyA.categoryBitMask == CollisionCategories.EnemySpaceShip &&
contact.bodyB.categoryBitMask == CollisionCategories.PlayerLaser
{
contact.bodyA.node?.physicsBody?.categoryBitMask = CollisionCategories.None
contact.bodyB.node?.physicsBody?.categoryBitMask = CollisionCategories.None
contact.bodyA.node?.removeFromParent()
contact.bodyB.node?.removeFromParent()
self.addPoints(5)
}
}