在我的游戏中,我有一个玩家用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()
与游戏初始阶段使用的功能相同,因此无法解决问题。)
然而,重启是我的问题开始的地方。这个函数缺少某些(在我看来)操纵某些值和处理标签的无关线。
我的问题的主要内容如下:
我完全理解GestureRecognizers
吗?
"向上滑动菜单有什么影响"在我现在的场景?是清除/重启某些事情,还是只是暂停我的场景?
编辑:
关于这个问题最令人困惑的事情是它是如何在重启"之后出现的,当重启过程无论如何都没有触及PanGesture时。我正在考虑重新制作游戏以创建一个问题不存在的版本,但这会使问题得不到解决。