Я пытаюсь создать игру Breakout, в которой я устанавливаю кирпичи именно так, как я хочу, для каждого уровня, используя 1 SKSpriteNode. Все работает, так как они появляются, но далеко за пределами экрана в левом нижнем углу. Я использую следующую строку прямо в начале didMove (для просмотра: SKView):
scene?.anchorPoint = CGPoint(x: 0.0, y: 0.0)
И код, который я использую для создания кирпичей:
//MARK: Brick Layout Config
let widthOfTiles = 7
let heightOfTiles = 3
let widthPoints = 50
let heightPoints = 20
// Different tile arrangements (e.g. 7 tiles wide, 3 high, 7*3 = 21 total tiles)
var brickArray = [false, true, false, true, false, true, false,
false, true, true, true, false, true, false,
false, true, false, true, false, true, false] // Says 'HI' using tiles
override func didMove(to view: SKView) {
//MARK: Brick
for tile in 0..<brickArray.count {
if brickArray[tile] == true {
let brick = SKSpriteNode(imageNamed: "red_brick")
brick.position = CGPoint(x: (tile % widthOfTiles) * (widthPoints) - (widthOfTiles / 2 * (widthPoints)),
y: ((tile - (tile % widthOfTiles)) / widthOfTiles) * (heightPoints) - (heightOfTiles / 2 * (heightPoints)))
brick.size = CGSize(width: widthPoints, height: heightPoints)
brick.physicsBody = SKPhysicsBody(rectangleOf: brick.frame.size)
brick.physicsBody?.friction = 0
brick.physicsBody?.allowsRotation = false
brick.physicsBody?.friction = 0
brick.physicsBody?.isDynamic = false
brick.physicsBody?.categoryBitMask = brickCategory
self.addChild(brick)
}
}
}
Я не могу ни за что, чтобы это было в центре сцены. Может быть, кто-нибудь поможет мне разобраться в этом. Математика - мое слабое место, и хотя я думаю, что правильно понял уравнение для нереста, позиция далека от идеала.
Если я пропустил что-то, что вам нужно увидеть, пожалуйста, дайте мне знать.
scene.width / 2 - (widthPoints * widthOfTiles) / 2
является вашей начальной позицией, затем добавьте позицию смещения плитки к этому числу (или используйте другой SKNode для смещения для вас) - person Knight0fDragon   schedule 25.04.2018