как переместить спрайт при касании экрана и отключить при касании экрана - PullRequest
0 голосов
/ 18 апреля 2019

Я делаю игру, в которой я перемещаю спрайт по экрану, но если я коснусь экрана, он переместится в это место, и я хочу, чтобы он двигался, только если я буду держать палец на экране, чтобы спрайт следуй за моим пальцем, и он не телепортируется через мои объекты

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        for touch in touches {
            let touchLocation = touch.location(in: self)
            player.position.x = touchLocation.x

        }
    }

Я попробовал это (игрок - мой спрайт), и он работает, когда я двигаю пальцем, спрайт будет следовать, но если я коснусь fx на боковой стороне экрана, он телепортируется в эту позицию, и я не хочу, чтобы это случилось.

1 Ответ

0 голосов
/ 19 апреля 2019

Попробуйте следующий код:

var isDragging = false
var player = /* SKSpriteNode or whatever */


override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
        let touchLocation = touch.location(in: view)
        if player.contains(touchLocation) {
            isDragging = true
        }
    }
}

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    guard isDragging else { return }

    if let touch = touches.first {
        let touchLocation = touch.location(in: view)
        player.position.x = touchLocation.x
    }
}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    isDragging = false
}

touchesBegan - Убедитесь, что место касания находится где-то внутри проигрывателя, с помощью contains().

touchesMoved - Если игрок перетаскивается, переместите игрока в положение касания.

touchesEnded - Когда касание закончится, перетаскивание остановится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...