2017-04-25 26 views
5

我的游戏有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

我不知道这个优雅的答案,但我认为这只是其中的一个出错当你使用物理引擎进行平台化时。如果您想让玩家站在水平滑动的平台上,您会遇到类似的困难。具体而言,在某些情况下,您希望玩家“坚持”到平台,但很难用引擎希望您使用的各种力量来描述这种效果。 –

+1

看看这个:http://stackoverflow.com/a/31594616 – Whirlwind

+0

座位也被一个销关节悬挂,这可能会进一步使问题复杂化。所以,它的上升,下降和角度都会改变。似乎我需要一种方法来将英雄的位置固定在座位平台的y位置上。 –

回答

2

这似乎是一个质量问题给我。该平台的质量与它无关,因为我读到它被固定在车轮上。所以你应该增加球员的质量。 如果你进入摩天轮,并且旋转得足够快,你也会在下坡时漂浮。将恢复原状设置为0是很好的避免反弹的方法,但它不会帮助保持明亮的物体:它的速度不够快。

此外,你可能想要实际上增加摩擦,使身体不会滑动。 0摩擦就像坐在冰上一样。

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. 
} 

你将不得不做掩码等,并调整它,因为可能会出现其他问题,但这是一个很好的方法,我认为不会影响玩家的重力/向下力量,当你在平台上时会搅乱游戏的感觉。

0

在英雄和平台上将恢复性设置为-1.0为我解决了这个问题。这与恢复原状文档有冲突:“该属性必须是介于0.0和1.0之间的值”