我正在制作一个使用 Doodle Jump 的游戏,比如跳跃,如果你向上移动,你可以通过平台,但如果你向下移动,则不能,除非有一个地面平台始终存在。你永远无法进入这个地面平台。然而,如果玩家移动得足够快,玩家就会像图片中那样穿过地面平台:
更令人困惑的是,这种情况只发生在跳跃的五分之一左右,而且只发生在地面平台上,与更高的平台相同。另一件不寻常的事情是,如果玩家在地下,即使图像完全在地下,它仍然可以正确检测到击中敌人,就好像它在地上一样,这让我觉得物理体和图像不知何故不是' t 同步。
我使用 staticSKPhysicsBody
来代表平台和地面,并使用 dynamicSKPhysicsBody
来代表玩家。我有platform.physicsBody?.collisionBitMask = PhysicsCategory.Player
平台和player.physicsBody?.collisionBitMask = PhysicsCategory.Platforms
播放器的。我也有physicsBody?.usesPreciseCollisionDetection = true
。两者都使用矩形来实现它们的物理体,平台的厚度为 2。
我已经尝试了一切,似乎没有什么能够解决这个问题。我什至尝试检查这是didSimulatePhysics()
.
override func didSimulatePhysics() {
if self.player.position.y <= 1/7 * size.height {
player.position.y = 1/7*size.height //+ CGFloat(yScaler) * size.height
if let body = player.physicsBody {
if body.velocity.dy < 0 {
self.player.physicsBody?.velocity.dy = 0
}
}
}
}
didSimulatePhysics()
正确检测到何时发生这种情况,但是当我尝试调整 player.position.y 时,它根本不会更新它并且仍然被困在地下!
关于这里发生了什么的任何想法?我无计可施。先感谢您!