我的游戏有一个有4个座位的摩天轮。每个座位都有一个平台,英雄可以在上面休息。当座椅处于上升轨道时,英雄平静地留在站台上。
然而,当座椅处于下降轨迹时,英雄会向上/向下移动一点。
我已经尝试了一些显而易见的东西: 1.将恢复设置为0没有任何效果。2.设置linearDamping为1无效。3.使平台和英雄的质量相同不起作用。4.调整摩擦力不起作用。
这是平台的物理主体:
supportNode?.physicsBody?.categoryBitMask = PhysicsCategory.ferrisPlatform.rawValue
supportNode?.physicsBody?.mass = 1000
supportNode?.physicsBody?.restitution = 0.0
supportNode?.physicsBody?.friction = 0.0
supportNode?.physicsBody?.linearDamping = 1.0这是英雄的身体:
self.physicsBody?.linearDamping = 1.0
self.physicsBody?.mass = 30
self.physicsBody?.restitution = 0
self.physicsBody?.friction = 0谢谢你的建议。这绝对是奇怪的是,英雄在摩天轮上升的过程中很好,但在下降的过程中只显示了奇怪的上下运动。
发布于 2017-04-26 11:45:55
对我来说,这似乎是一个质量问题。平台的质量与它无关,因为我读到它是固定在轮子上的。所以你应该增加玩家的质量。如果你坐在摩天轮上,让它旋转得足够快,你也会在下沉的时候浮起来。将restitution设置为0可以很好地避免反弹,但这无助于保持灯光对象的位置:它只是下落得不够快。
另外,你可能想要增加摩擦力,这样身体就不会滑动。没有摩擦力,就像坐在冰上。
发布于 2017-04-27 09:59:48
在物理计算后手动调整玩家的位置。在didSimulatePhysics中
if player.isOnPlatform {
player.position.y = platform.position.y // Maybe +1 or something like that
}现在只需添加一个联系人代理,以便在您与didBegin(contact中的平台进行联系时打开/关闭
if player.position.y > platform.position.y { // So jumping under the platform wont warp you to the top
player.isOnPlatform = true // Make sure to toggle this off at the right times as well, such as in you player.jump() method.
}你将不得不做比特掩码等,并调整它,因为其他问题可能会出现,但我认为这是一个很好的方法,而不会影响玩家的重力/下拉力,这将扰乱游戏的感觉,当你在一个平台上。
发布于 2017-07-21 02:16:59
在英雄和平台上将恢复设置为-1.0为我解决了这个问题。这与恢复原状的文档相冲突,文档中说:“该属性必须是介于0.0和1.0之间的值”。
https://stackoverflow.com/questions/43618377
复制相似问题