我的游戏有一个带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
感谢您的任何提示。在摩天轮上骑行时,英雄很好,但在向下的路上只显示古怪的上/下运动,这绝对是奇怪的。
答案 0 :(得分:2)
对我来说,这似乎是一个质量问题。平台的质量与它无关,因为我读到它固定在方向盘上。所以你应该增加球员的质量。 如果你进入摩天轮并使其旋转得足够快,那么在下降时你也会漂浮。将恢复原状设置为0可以避免反弹,但它无助于保持一个轻型物体到位:它的速度不够快。
此外,您可能希望实际增加摩擦力,以便身体不会滑动。 0摩擦就像坐在冰上一样。
答案 1 :(得分:0)
在物理计算后手动调整玩家的位置..在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.
}
你将不得不做其他问题可能会出现的bitmasks等调整它,但这是一个很好的方法,我认为不会影响玩家的重力/向下力量,当你在游戏中时会破坏游戏的感觉平台。
答案 2 :(得分:0)
在英雄身上将恢复原状设置为-1.0,平台为我解决了这个问题。这与恢复原状的文件相冲突,该文件说:"该属性必须是介于0.0和1.0之间的值"