当敌人靠近时玩家不会检测到碰撞
Player won't detect collision when enemies get close
我已经设法让子弹和敌人发生接触,但由于某些原因,主角不会与敌人发生接触。
func didBegin(_ contact: SKPhysicsContact) {
var firstBody:SKPhysicsBody
var secondBody:SKPhysicsBody
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
}else{
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if (firstBody.categoryBitMask & Bullet) != 0 && (secondBody.categoryBitMask & Enemy) != 0{
bulletDidCollideWithEnemy(bulletNode: firstBody.node as! SKSpriteNode, Zombie: secondBody.node as! SKSpriteNode)
}else{
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if (firstBody.categoryBitMask & Player) != 0 && (secondBody.categoryBitMask & Enemy) != 0{
playerCollideWithEnemy(playerNode: firstBody.node as! SKSpriteNode, Zombie: secondBody.node as! SKSpriteNode)
}
}
对于遇到与我相同问题的任何人,这里是问题的解决方案。我只需要确保 "Enemy" 对其他对象可见。非常重要!希望这对某人有所帮助。
Enemy.physicsBody?.affectedByGravity = false
Enemy.physicsBody?.isDynamic = true
我已经设法让子弹和敌人发生接触,但由于某些原因,主角不会与敌人发生接触。
func didBegin(_ contact: SKPhysicsContact) {
var firstBody:SKPhysicsBody
var secondBody:SKPhysicsBody
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
}else{
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if (firstBody.categoryBitMask & Bullet) != 0 && (secondBody.categoryBitMask & Enemy) != 0{
bulletDidCollideWithEnemy(bulletNode: firstBody.node as! SKSpriteNode, Zombie: secondBody.node as! SKSpriteNode)
}else{
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if (firstBody.categoryBitMask & Player) != 0 && (secondBody.categoryBitMask & Enemy) != 0{
playerCollideWithEnemy(playerNode: firstBody.node as! SKSpriteNode, Zombie: secondBody.node as! SKSpriteNode)
}
}
对于遇到与我相同问题的任何人,这里是问题的解决方案。我只需要确保 "Enemy" 对其他对象可见。非常重要!希望这对某人有所帮助。
Enemy.physicsBody?.affectedByGravity = false
Enemy.physicsBody?.isDynamic = true