Swift 物理身体/精灵无缘无故改变位置

Swift 物理身体/精灵无缘无故改变位置,swift,sprite-kit,position,sprite,skphysicsbody,Swift,Sprite Kit,Position,Sprite,Skphysicsbody,我有几个精灵的物理体排列在一起,每个物理体应该只是稍微接触下一个物理体。当我让应用程序闲置几分钟时,一些物理体开始相互重叠,而当我让应用程序闲置几个小时时,物理体彼此明显重叠(约5-10像素)。可能是精灵在移动,而不是物理体,我真的能分辨出是哪一个 我不认为物理体之间的碰撞会推动位置,因为我设置了每个物理体的碰撞位掩码,这样它们就不会相互碰撞。此外,目前还没有SKActions可用于移动应用程序中的任何内容 下面是我用来设置每个物理体的代码: spriteSegment = SKSpriteNo

我有几个精灵的物理体排列在一起,每个物理体应该只是稍微接触下一个物理体。当我让应用程序闲置几分钟时,一些物理体开始相互重叠,而当我让应用程序闲置几个小时时,物理体彼此明显重叠(约5-10像素)。可能是精灵在移动,而不是物理体,我真的能分辨出是哪一个

我不认为物理体之间的碰撞会推动位置,因为我设置了每个物理体的碰撞位掩码,这样它们就不会相互碰撞。此外,目前还没有SKActions可用于移动应用程序中的任何内容

下面是我用来设置每个物理体的代码:

spriteSegment = SKSpriteNode(texture: arrayTextureSegments[segmentType])
spriteSegment.position.x = CGFloat(countSegment) * 30 // the spriteSegment size is 30 by the way

spriteSegment.physicsBody = SKPhysicsBody(rectangleOfSize: spriteSegment.size)
spriteSegment.physicsBody?.restitution = 0
spriteSegment.physicsBody?.dynamic = false
spriteSegment.physicsBody?.affectedByGravity = false

spriteSegment.physicsBody?.categoryBitMask = bitType1
spriteSegment.physicsBody?.collisionBitMask = bitType2
spriteSegment.physicsBody?.contactTestBitMask = bitType2

addChild(spriteSegment)
有人知道是什么造成了这种行为吗

编辑:

做了一个样本,我仍然得到同样奇怪的行为,图像改变位置。我注意到20分钟后有一个小变化,但如果应用程序闲置一小时,你应该能够清楚地看到我在说什么

GameSecene.swift代码:

GameViewController.swift代码:

分段图像(0@2x~iphone.png):

编辑:

这是一个小时前后的差异图像。蓝色是物理体的轮廓

编辑:

不知道我是否做对了,但整个项目的链接:

上次编辑:

我每20分钟记录下每个精灵的位置,下面是结果


我无法使用您的代码重复问题。你能制作一个示例项目并上传到某个地方吗?这将有助于找到真正的问题。当然,我现在已经完成了一个示例,但在我上传它之前,我将对它进行测试,以确保它会产生相同的问题。包括你的纹理“片段”以及黄色部分是什么?我建议你将整个项目上传到github或dropbox。只需检查我的手机,它运行的是iOS 9。没有精灵移动。必须与模拟器隔离,但愿我先检查过我的手机。我可以忍受模拟器不能正常工作。非常感谢Wang花时间测试这个问题,我真的很感激。我不能用你的代码重复这个问题。你能制作一个示例项目并上传到某个地方吗?这将有助于找到真正的问题。当然,我现在已经完成了一个示例,但在我上传它之前,我将对它进行测试,以确保它会产生相同的问题。包括你的纹理“片段”以及黄色部分是什么?我建议你将整个项目上传到github或dropbox。只需检查我的手机,它运行的是iOS 9。没有精灵移动。必须与模拟器隔离,但愿我先检查过我的手机。我可以忍受模拟器不能正常工作。非常感谢王先生花时间测试这个问题,我真的很感激。