我在游戏中实现了3DTouch偷看和弹出动作。
基本上我有一个MenuScene和一个GameScene。在MenuScene中我有2个CollectionViewControllers(世界选择和级别选择)。我可以使用世界选择菜单中的peek和pop来预览级别选择菜单。一切都很完美,但我有一个问题。
当我在MenuScene中使用peek和pop而不是转换到GameScene来玩我的游戏时,物理似乎搞砸了。施加冲动非常低,所以我的球员只能跳到他应该的高度的1/5左右。 即使增加调整这种情况的冲动也不起作用,跳跃高度始终保持不变,无论我使用什么值。 似乎applyForce,我使用核心动作移动我的玩家,更加缓慢。
奇怪的是它似乎只影响跳跃。我的拍摄代码,也使用了一个冲动,仍然工作正常。 当我在菜单场景中使用偷看和弹出时,几乎感觉玩家更重,但我看不到任何表明这一点的东西。
如果我没有在MenuScene中使用peek和pop,只是去GameScene我没有这个问题,一切都像往常一样。
到目前为止,我尝试过的步骤无济于事。
1)当我退出MenuScene时,尝试取消注册预览委托。
unregisterForPreviewing(withContext: ...)
2)将预览委托直接添加到世界菜单CollectionViewController,而不是将其添加到rootviewcontroller。
3)使用控制台打印出我的GameScene物理值,看看是不是搞砸了。
我错过了什么吗?为什么偷看和弹出动作搞乱SpriteKit物理?
更新:
这似乎只在使用UIPreviewActions时才会发生。我转向物理学看看是怎么回事。如果我在我的关卡菜单中启用了UIPreviewActions而不是查看或弹出,而不是关闭菜单,我可以看到所有物理都在MenuScene中混乱。它们的大小应该是它们应该的大小的一半,并且场景物理边界有点向左移动。如果我转换到GameScene,和/或回到MenuScene,物理看起来正常,但我遇到跳跃问题。
如果关闭UIPreviewActions,一切正常,非常奇怪。