首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何让一个英雄物理体安静地休息在一个移动的平台上?

我如何让一个英雄物理体安静地休息在一个移动的平台上?
EN

Stack Overflow用户
提问于 2017-04-26 02:29:49
回答 3查看 102关注 0票数 5

我的游戏有一个有4个座位的摩天轮。每个座位都有一个平台,英雄可以在上面休息。当座椅处于上升轨道时,英雄平静地留在站台上。

然而,当座椅处于下降轨迹时,英雄会向上/向下移动一点。

我已经尝试了一些显而易见的东西: 1.将恢复设置为0没有任何效果。2.设置linearDamping为1无效。3.使平台和英雄的质量相同不起作用。4.调整摩擦力不起作用。

这是平台的物理主体:

代码语言:javascript
复制
        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

这是英雄的身体:

代码语言:javascript
复制
    self.physicsBody?.linearDamping = 1.0
    self.physicsBody?.mass = 30
    self.physicsBody?.restitution = 0
    self.physicsBody?.friction = 0

谢谢你的建议。这绝对是奇怪的是,英雄在摩天轮上升的过程中很好,但在下降的过程中只显示了奇怪的上下运动。

EN

回答 3

Stack Overflow用户

发布于 2017-04-26 11:45:55

对我来说,这似乎是一个质量问题。平台的质量与它无关,因为我读到它是固定在轮子上的。所以你应该增加玩家的质量。如果你坐在摩天轮上,让它旋转得足够快,你也会在下沉的时候浮起来。将restitution设置为0可以很好地避免反弹,但这无助于保持灯光对象的位置:它只是下落得不够快。

另外,你可能想要增加摩擦力,这样身体就不会滑动。没有摩擦力,就像坐在冰上。

票数 2
EN

Stack Overflow用户

发布于 2017-04-27 09:59:48

在物理计算后手动调整玩家的位置。在didSimulatePhysics

代码语言:javascript
复制
if player.isOnPlatform {

    player.position.y = platform.position.y // Maybe +1 or something like that

}

现在只需添加一个联系人代理,以便在您与didBegin(contact中的平台进行联系时打开/关闭

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-07-21 02:16:59

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43618377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档