Получить сенсорное расположение экрана в игре спрайт - PullRequest
0 голосов
/ 25 мая 2018

У меня есть игра для набора спрайтов, и я пытаюсь узнать, касался ли пользователь левой, правой или средней части экрана (25/50/25)

В тот момент, когда я касаюсь самого левогона стороне экрана, он говорит, что я касаюсь -450 по оси x, когда он должен быть 0. Я предполагаю, что он получает мое положение касания относительно сцены и, поскольку точка ахора начинается с 450 пикселей вправо, дает мне -450, когда якоснитесь 0.

Поскольку это боковой скроллер, перемещение ахора не будет работать, и мне нужно сенсорное расположение экрана:

override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?){
    var touchLeft : Bool = false
    var touchRight : Bool = false
    var touchMiddle : Bool = false

    for touch in (touches) {
        let location = touch.location(in: self)

        if(location.x < self.size.width/4){
            touchLeft = true
            print("Left")
        } else if(location.x > ((self.size.width/4) * 3)){
            touchRight = true
            print("Right")
        } else {
            touchMiddle = true
            print("Middle")
        }
    }
}

1 Ответ

0 голосов
/ 25 мая 2018

У вас это почти получилось, только с учетом отрицательных чисел.

Если вы не знали, 0 является центром по умолчанию для SKScene.Это связано с тем, что точка привязки по умолчанию составляет 0,5,0,5.

Поскольку вы используете камеру для прокрутки, вы хотите использовать touch.location(in: self.camera), чтобы вы всегда касались положения камеры, а негде сцена.

Так что просто измените ваш код следующим образом:

override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?){
    var touchLeft : Bool = false
    var touchRight : Bool = false
    var touchMiddle : Bool = false

    for touch in (touches) {
        let location = touch.location(in: self.camera)

        if(location.x < -self.size.width/4){
            touchLeft = true
            print("Left")
        } else if(location.x > ((self.size.width/4))){
            touchRight = true
            print("Right")
        } else {  //x is between -width / 4 and width / 4
            touchMiddle = true
            print("Middle")
        }
    }
}
...