Спрайт застревает между двумя спрайтами - PullRequest
0 голосов
/ 14 октября 2019

В настоящее время я работаю над имитацией Super Mario на iOS, используя полностью SpriteKit. В этой игре я создал стену, состоящую из разных блоков, по какой-то причине игрок может стоять между этими блоками, даже если буквально нет места, на котором можно стоять. (см. изображение ниже)

playerSprite использует точное обнаружение столкновений и имеет физическое тело прямоугольника.

Блоки не используют точное обнаружение столкновений и представляют собой идеальный квадрат.

Снимок экрана

Вот код, касающийся физического тела игрока:

func setupPhysics() {
    self.physicsBody!.mass = 0.02275555580854416
    self.physicsBody!.allowsRotation = false
    self.physicsBody!.usesPreciseCollisionDetection = true
    self.physicsBody!.categoryBitMask = CollisionTypes.player.rawValue
    self.physicsBody!.collisionBitMask = CollisionTypes.brickBlock.rawValue | CollisionTypes.questionMarkBlock.rawValue | CollisionTypes.groundBlock.rawValue | CollisionTypes.solidBlock.rawValue | CollisionTypes.enemy.rawValue
    self.physicsBody!.contactTestBitMask = CollisionTypes.brickBlock.rawValue | CollisionTypes.questionMarkBlock.rawValue | CollisionTypes.groundBlock.rawValue | CollisionTypes.solidBlock.rawValue | CollisionTypes.coin.rawValue | CollisionTypes.playerDetectionBlock.rawValue | CollisionTypes.enemy.rawValue
}

Вот код, касающийся блоков:

self.size = CGSize(width: 16, height: 16)
self.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: 16, height: 16))
self.physicsBody!.isDynamic = false
self.texture = SKTexture(imageNamed: "Solid Block")
self.texture!.filteringMode = .nearest
self.name = "SolidBlock"
self.position = position
self.physicsBody!.categoryBitMask = CollisionTypes.solidBlock.rawValue
self.physicsBody!.contactTestBitMask = CollisionTypes.player.rawValue
self.blendMode = .replace

Спасибо, что уже помогли мне!

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

...