Spritekit,Xcode中的节点移动滞后

在我的游戏中,我有一个玩家用PanGesture控制的PanGesture 。 当调用PanGesture函数时,它会将其速度添加到相关节点的速度,使其移动。

但是,我遇到了一个问题,即节点(在特定但不一致的情况下)移动得更慢而且不如预期的那么顺利。

当我启动应用程序时,它(有时)具有正确的移动速度。 一旦我“死”,并重新启动(删除所有节点和识别器,重新启动场景,重新制作所有节点和识别器),节点就不会以正确的速度移动。

这是事情变得奇怪的地方。

重新启动游戏并看到节点速度不正确后,我可以访问“向上滑动菜单”,然后立即将其关闭,此时节点将恢复到预期的速度。 然而,这并不总是有效。 最重要的是,我可以让场景发生同样的事情。 这种情况发生的频率更低。

这是我用来制作GestureRecognizer的代码:

 let Panned:UIPanGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(GameScene.Panned)) view.addGestureRecognizer(Panned) 

这些行仅在每个场景中运行一次。 (制作多个GestureRecognizers会导致整个场景在每次触摸屏幕时都会出现戏剧性的帧丢失。)

这是将移动速度添加到节点的代码:

 func Panned(sender:UIPanGestureRecognizer){ velocity = sender.velocity(in: view) if movement == true{ Node.position.x = Node.position.x+(velocity.x/100)/1 Node.position.y = Node.position.y-(velocity.y/100)/1 } } 

每次PanGestureRecognizer检测到“平移”运动时, PanGestureRecognizer调用此函数。

这是我的重启function,它为下一个游戏实例准备场景:

 func restartScene(){ removeAllChildren() removeAllActions() createScene() } 

removeAllChildren将杀死我的口吃节点, createScene()将再次恢复它。 (应该注意的是, createScene()与游戏初始阶段使用的function相同,因此无法解决问题。)

然而,重启是我的问题开始的地方。 这个函数缺少某些(在我看来)操纵某些值和处理标签的无关线。

我的问题的主要要点如下:

  1. 我是否完全了解GestureRecognizers

  2. “刷卡菜单”对我当前的场景有什么影响? 是清除/重启某些事情,还是只是暂停我的场景?

编辑:

关于这个问题最令人困惑的事情是它是如何在“重启”之后出现的,当重启过程无论如何都没有触及PanGesture时。 我正在考虑重新制作游戏以创建一个不存在问题的版本,但这会使问题得不到解决。