在SpriteKit中使用滑动识别器

时间:2017-10-24 16:19:56

标签: swift sprite-kit move swipe-gesture

我试图在SpriteKit中左右移动滑动手势,玩家收集从屏幕顶部产生的坠落物体。我面临的问题是当手指在屏幕上时,试图保持玩家的连续移动,直到触摸结束并且玩家停留在最后一次触摸结束的地方。除了滑动手势之外,可能有更好的方法来实现这一点,因此为什么我要问你们!任何帮助都会很棒,谢谢大家!

1 个答案:

答案 0 :(得分:2)

这不是你想要使用滑动(我认为你正在使用pan)手势的东西。您要做的是覆盖场景中的touchesBegantouchesMovedtouchesEnded来电,并根据这3种方法规划您的动作。

您可能希望对这些方法使用SKAction.move(to:duration:),并计算出数学以保持恒定速度。

E.G。

func movePlayer(to position:CGPoint)
{
  let distance = player.position.distance(to:position)
  let move = SKAction.move(to:position, duration: distance / 100) // I want my player to move 100 points per second
  //using a key will cancel the last move action
  player.runAction(move,withKey:"playerMoving")
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) 
{
  let touch = touches.first
  let position = touch.location(in node:self)
  movePlayer(to:position)
}

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) 
{
  let touch = touches.first
  let position = touch.location(in node:self)
  movePlayer(to:position)
}


override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
  let touch = touches.first
  let position = touch.location(in node:self)
  movePlayer(to:position)
}