【问题标题】:Unity Pushing Object Script (Little Big Planet like)Unity Pushing Object Script (Little Big Planet like)
【发布时间】:2017-02-21 17:33:29
【问题描述】:

我想用玩家推动物体刚体的相同力量来拉动物体。但是,我不知道如何使这样的力等于走进刚体的力。

这是我的代码:

 //if can push and holds button for pushing
other.GetComponent<Rigidbody>().AddForce(new Vector3(player.moveInput.x*player.speed*mass, player.moveInput.y * player.speed * mass, player.moveInput.z * player.speed * mass), ForceMode.Impulse);

现在上面的代码只是让盒子飞起来的力量比我预期的要大得多。

【问题讨论】:

  • 你是在问如何用他推向物体的相同力量将玩家从物体上推开?此外,您应该发布整个代码并更好地解释您的要求。
  • 我在问如何为玩家制作一个拉动脚本来拉动物体,这样当他移动物体时,保持一定的距离,我怎样才能做到这一点?
  • "...力等于走进刚体的力"是什么意思?什么是“行走的力量”?另外,player.moveInput 是什么?

标签: unity3d game-physics rigid-bodies


【解决方案1】:

哦,我想我明白了:一个玩家移动到一个物体中,你想沿着玩家移动这个物体吗?

目前为止,最简单的方法是随心所欲地忽略力量

object.velocity = player.velocity

(注意这里的术语:speed 是无方向的,但 velocity 是一个向量并且有 3 个分量,所以上面的意思是object.velocity.x = player.velocity.xobject.velocity.y = player.velocity.y 等。 )


您可能需要计算一个力以使其在 Unity 中起作用,因此让我们推导出它。我将使用v 表示速度,使用nv 表示“下一个速度”。正常的时间更新看起来像

object.nv = object.v + object.force*object.mass*∆t

现在我们要object.nv == player.v:

player.v = object.v + object.force*object.mass*∆t

把所有东西都搬过来:

object.force = (player.v - object.v)/(object.mass*∆t)

有了这个等式,玩家根本不会受到影响,但你进入的身体应该与玩家“一起”移动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 2014-05-25
    • 2018-05-15
    • 2022-06-10
    • 2012-04-15
    相关资源
    最近更新 更多