我正在制作一款使用Doodle Jump跳跃的游戏,如果你向前移动,你可以通过平台,但如果你向下移动则不会,除非有一个始终存在的地面平台。你无法进入这个地面平台。但是,如果玩家移动速度足够快,则玩家会像图片中那样穿过地面平台:
更令人困惑的是,这只发生了大约1/5的跳跃,只发生在地面平台上,这与更高的平台相同。另一件不寻常的事情是,如果玩家低于地面,即使图像完全低于地面,它仍然可以正确地检测击中敌人,就好像它在地面上一样,这让我认为物理身体和图像不知何故不是# 39; t synchronized。
我正在使用静态SKPhysicsBody
代表这些平台&地面和动态SKPhysicsBody
来代表玩家。我有平台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时,它根本没有更新它并且仍然被困在地下!
关于这里发生了什么的任何想法?我智慧结束了。先感谢您!