Как я могу добавить свой узел лечения в нескольких местах на протяжении всей игры? - PullRequest
0 голосов
/ 02 декабря 2018

Мне нужно около 15 угощений, и я просто хочу изменить положение х этих угощений.Я не хочу копировать и вставлять этот код 15 раз, так как я могу это сделать?

func createTreatNode() {
    let atlas = SKTextureAtlas(named: "Treat")
    let q1 = atlas.textureNamed("treat1.png")
    let q2 = atlas.textureNamed("treat2.png")
    let q3 = atlas.textureNamed("treat3.png")
    let treatAnimation = [q1, q2, q3]
    let treat = SKSpriteNode(texture: q1)
    treat.position = CGPoint(x: 1000, y: 150)
    print("treat position \(treat.position)")
    treat.size = CGSize(width: 60, height: 50)
    treat.name = "Treat"
    let animate = SKAction.animate(with: treatAnimation, timePerFrame: 0.2)
    let repeatAction = SKAction.repeatForever(animate)
    treat.run(repeatAction)
    let body = SKPhysicsBody(rectangleOf: treat.size)
    body.usesPreciseCollisionDetection = true
    body.affectedByGravity = false
    body.collisionBitMask = 0x7FFFFFFF
    body.contactTestBitMask = 0x80000000
    treat.physicsBody = body
    addChild(treat)
}

1 Ответ

0 голосов
/ 03 декабря 2018

Я рекомендую добавить параметр в вашу функцию createTreatNode().Затем измените treat.position = CGPoint(x: 1000, y: 150) на treat.position = CGPoint(x: atXCoordinate, y: 150) следующим образом:

func createTreatNode(atXCoordinate: Int) {
    let atlas = SKTextureAtlas(named: "Treat")
    let q1 = atlas.textureNamed("treat1.png")
    let q2 = atlas.textureNamed("treat2.png")
    let q3 = atlas.textureNamed("treat3.png")
    let treatAnimation = [q1, q2, q3]
    let treat = SKSpriteNode(texture: q1)
    treat.position = CGPoint(x: atXCoordinate, y: 150)
    print("treat position \(treat.position)")
    treat.size = CGSize(width: 60, height: 50)
    treat.name = "Treat"
    let animate = SKAction.animate(with: treatAnimation, timePerFrame: 0.2)
    let repeatAction = SKAction.repeatForever(animate)
    treat.run(repeatAction)
    let body = SKPhysicsBody(rectangleOf: treat.size)
    body.usesPreciseCollisionDetection = true
    body.affectedByGravity = false
    body.collisionBitMask = 0x7FFFFFFF
    body.contactTestBitMask = 0x80000000
    treat.physicsBody = body
    addChild(treat)
}

Таким образом, вы можете вызвать createTreatNode(atXCoordinate:) 15 раз с разными координатами x, и это добавит дочерние узлы обработки в текущую сцену с координатами xВы перешли на это.

...