我正在做一个游戏,我在屏幕上移动精灵,但是如果我在屏幕上轻按,它将移动到该位置,并且只在手指按住屏幕的情况下才希望它移动,这样精灵才能跟随我的手指,它不会通过我的物体传送
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它将移动到那个位置,而我不会希望这种情况发生。
答案 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 -触摸结束后,拖动将停止。