Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 玩家移动时口吃-精灵套件_Swift_Sprite Kit_Swift4 - Fatal编程技术网

Swift 玩家移动时口吃-精灵套件

Swift 玩家移动时口吃-精灵套件,swift,sprite-kit,swift4,Swift,Sprite Kit,Swift4,我的播放器是一个SKSpriteNode。我正在用CGVectors和player.physicsBody!移动它!。applyImpulse()。这很好,但当我的球员移动时,它似乎经常左右口吃。为了解决这个问题,我尝试更改了一些physicsBody属性。在update函数中,我添加了这行代码:player.physicsBody?.摩擦力=0。这仍然没有改变什么。所以我认为这种口吃是由球员触地引起的。因此,我在更新函数中添加了一行新代码:player.position.y+=1。当然,由于这

我的播放器是一个
SKSpriteNode
。我正在用
CGVectors
player.physicsBody!移动它!。applyImpulse()
。这很好,但当我的球员移动时,它似乎经常左右口吃。为了解决这个问题,我尝试更改了一些
physicsBody
属性。在
update
函数中,我添加了这行代码:
player.physicsBody?.摩擦力=0
。这仍然没有改变什么。所以我认为这种口吃是由球员触地引起的。因此,我在更新函数中添加了一行新代码:
player.position.y+=1
。当然,由于这种解决方案的性质,玩家现在上下结巴,但能够毫无问题地左右移动。这向我表明,问题在于当玩家接触地面时,某种类型的力。我如何阻止玩家口吃

编辑:我想知道我的“背景”实际上是一堆相邻排列的
SKSpriteNode
,使其看起来像一个瓷砖贴图,这将是有益的


编辑:我的播放机的物理实体是使用以下代码行设置的:
player.physicsBody=SKPhysicsBody(rectangleOf:player.size)

您可能使用了太多的spritenode尝试使用SKTileMapNode。将在性能方面显著帮助您。youtube和raywenderlich上有如何使用它们的教程。只要看一下,你就会发现使用起来非常简单。

我找到了一个解决口吃的方法,只需将这行代码:
player.physicsBody=SKPhysicsBody(rectangleOf:player.size)
改成一个圆圈。通过将physicsBody设置为一个圆圈,所有的口吃都消失了,但现在我无法得到我的玩家站在地面上的效果。

所以问题根本与玩家的物理无关?我想你没有启用调试信息来查看屏幕上有多少节点和fps?我得到了大约50到60 fps,我不能使用
SKTileMapNode
,因为我使用的是自定义类。事实上,我得到的是59到60 fps,节点数是384。你在模拟器中运行它吗?定义“stutter”。听起来你的代码在移动时随机左右移动有问题。好吧,你需要创建一个mcve来确定什么是真正的错误