Sprite-Kit начал сенсорную ошибку

Я пытаюсь создать метод, который, когда я касаюсь спрайта с именем StartSprite через мою функцию touchesbegan, выводит что-то на мою консоль. Но по какой-то причине, когда я нажимаю на спрайт, ничего не происходит. Это мой код.

import SpriteKit

class GameScene: SKScene {

let StartSprite = SKSpriteNode(imageNamed: "startLabel")



override func didMoveToView(view: SKView) {

    let borderRect = CGRect(x: 0 , y: 0 , width: 400, height: 725)


    let welcomeLabel = SKLabelNode(fontNamed: "welcome");
    welcomeLabel.text = "Welcome";
    welcomeLabel.fontColor = UIColor.whiteColor()
    welcomeLabel.fontSize = 65
    welcomeLabel.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2 + 150)
    self.addChild(welcomeLabel)

   //StartLabel


    let rectangleBorder = SKShapeNode(rect: borderRect)
    rectangleBorder.position = CGPoint(x: 315, y: 25)
    rectangleBorder.strokeColor = UIColor.whiteColor()
    self.addChild(rectangleBorder)

    self.backgroundColor = UIColor.grayColor()



    StartSprite.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2)
    self.addChild(StartSprite)


    println("Hello")

}

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    let touch = touches.first as! UITouch
    let touchLocation = touch.locationInNode(self)
        if touchLocation == StartSprite.position{

            println("Touches")

        }
    }
}

person Cj Miller    schedule 25.10.2015    source источник


Ответы (1)


Ваш код требует, чтобы вы коснулись ровно одного пикселя в StartSprite.position.

Попробуйте это вместо этого:

let p = StartSprite.convertPoint(touchLocation, fromNode: self)
if StartSprite.containsPoint(p) {
    print("touched StartSprite")
}

Если вы собираетесь добавить больше кнопок, вы можете сделать это вместо этого:

let target = nodeAtPoint(touchLocation)
if target == StartSprite {
    print("touched StartSprite"
}
// check other buttons here
person rob mayoff    schedule 25.10.2015
comment
nodeAtPoint не возвращает необязательный - person 0x141E; 25.10.2015