Я создаю игру со скроллом параллакса, и игрок анимирован с помощью атласа текстур. Я столкнулся с различными проблемами при первоначальной попытке назначить физическое тело узлу с текстурным атласом. В любом случае, теперь, когда я пытаюсь запустить игру на телефоне (iPhone X, iOS 13.5), все работает, но когда я пытаюсь запустить ее на симуляторе (iOS13.5), не удается создать физическое тело для земля, которую предполагается создать с помощью следующей функции:
func parallaxScroll(image: String, y: CGFloat, z: CGFloat, duration: Double, needsPhysics: Bool) {
for i in 0 ... 1 {
// position the first node on the left, and position second on the right
let node = SKSpriteNode(imageNamed: image)
node.position = CGPoint(x: 1023 * CGFloat(i), y: y)
node.zPosition = z
addChild(node)
if needsPhysics {
_ = node.texture!.size()
node.physicsBody = SKPhysicsBody(texture: node.texture!, size: node.texture!.size())
if node.physicsBody == nil {
print("Failed to create physics body for ground")
} else {
print("Physics body for ground created successfully")
}
node.physicsBody?.isDynamic = false
node.physicsBody?.contactTestBitMask = 1
node.physicsBody?.collisionBitMask = 1
node.name = "ground"
}
// make this node move the width of the screen by whatever duration was passed in
let move = SKAction.moveBy(x: -1024, y: 0, duration: duration)
// make it jump back to the right edge
let wrap = SKAction.moveBy(x: 1024, y: 0, duration: 0)
// make these two as a sequence that loops forever
let sequence = SKAction.sequence([move, wrap])
let forever = SKAction.repeatForever(sequence)
// run the animations
node.run(forever)
}
}
Кто-нибудь знает, в чем проблема и как ее решить?