Как я могу добавить свой узел лечения в нескольких местах на протяжении всей игры?
Я хочу иметь около 15 угощений, и я просто хочу изменить положение x этих угощений. Я не хочу копировать и вставлять этот код 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 ответ
Я рекомендую добавить параметр в ваш 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, которые вы ей передали.