SKSpriteNode Подкласс Позиция вопроса - PullRequest
0 голосов
/ 10 марта 2019

Я разрабатываю игру, в которой у вас есть персонаж.Персонаж является подклассом SKSpriteNode:

class Character: SKSpriteNode {

init() {
    let texture = SKTexture(imageNamed: "character")
    super.init(texture: texture, color: UIColor.white, size: texture.size())
    self.isUserInteractionEnabled = true
    self.zPosition = 10
    self.position = CGPoint(x: 0, y: 0)
    self.name = "character"
}

required init(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}


override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    print("Touch!")

    // Create small +1 sprite
    let plusNode = SKSpriteNode(imageNamed: "plus1Node")
    plusNode.zPosition = 10000 //To make sure its always in front
    plusNode.position = self.position
    self.addChild(plusNode)
}

Персонаж добавляется в игру через GameScene.swift:

    func spawnCharacter() {
        //Random postion for the pigs
        let randomX = Functions().randomBetweenNumbers(firstNum: -140, secondNum: 140)
        let randomY = Functions().randomBetweenNumbers(firstNum: -240, secondNum: 240)

        let newCharacter = Character()
        newCharacter = CGPoint(x: randomX, y: randomY)
        gameArea!.addChild(newCharacter)
    }

Когда игрок слегка касается персонажа "+1"узел порожден, чтобы показать игроку, что он коснулся персонажа.Я хочу, чтобы этот +1 узел появлялся на вершине персонажа, но он расположен далеко - как несколько точек отсюда.

Если я переместлю код +1 в GameScene (сразу после того, как персонаж будет создан и добавлен в сцену, позиция будет точной).

Чего мне здесь не хватает?

1 Ответ

2 голосов
/ 10 марта 2019
PulzeNode.position = CGpoint.zero

Когда вы добавляете его к символу, он должен быть в начале родительского узла

...