0

我正在制作一个使用 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 时,它根本不会更新它并且仍然被困在地下!

关于这里发生了什么的任何想法?我无计可施。先感谢您!

4

0 回答 0