触摸屏幕时如何移动精灵,点击屏幕时如何禁用

时间:2019-04-18 20:40:21

标签: swift xcode skspritenode touchesmoved

我正在做一个游戏,我在屏幕上移动精灵,但是如果我在屏幕上轻按,它将移动到该位置,并且只在手指按住屏幕的情况下才希望它移动,这样精灵才能跟随我的手指,它不会通过我的物体传送

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 :(得分:0)

尝试以下代码:

col2

touchesBegan -使用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 } 确保触摸位置在播放器内。

touchesMoved -如果拖动播放器,请将其移动到触摸的位置。

touchesEnded -触摸结束后,拖动将停止。