Spritekit中的节点移动滞后,Xcode

时间:2016-12-25 23:44:39

标签: ios swift xcode sprite-kit

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

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

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

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

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

这是我用来制作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检测到" pan"运动。

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

func restartScene(){

    removeAllChildren()
    removeAllActions()

    createScene()

}

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

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

我的问题的主要内容如下:

  1. 我完全理解GestureRecognizers吗?

  2. "向上滑动菜单有什么影响"在我现在的场景?是清除/重启某些事情,还是只是暂停我的场景?

  3. 编辑:

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

0 个答案:

没有答案