Unity推动对象脚本(像小大星球一样)

时间:2017-02-20 17:42:48

标签: unity3d game-physics rigid-bodies

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

这是我的代码:

 //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);

现在,上面的代码只是使用一个远大于我预期的力量来飞行。

1 个答案:

答案 0 :(得分:0)

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

最简单的方法是到目前为止无视你想要的力量

object.velocity = player.velocity

(注意这里的术语:速度是无方向的,但速度是一个向量并有3个组件,所以上面的意思是object.velocity.x = player.velocity.x,{{1等等。)

您可能需要计算一个力才能在Unity中工作,所以让我们推导出来。我将object.velocity.y = player.velocity.y用于速度,v用于下一个速度&#39;。正常时间更新看起来像

nv

现在我们想要object.nv = object.v + object.force*object.mass*∆t

object.nv == player.v

移动一切:

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

通过这个等式,玩家根本不会受到影响,但是你进入的身体应该沿着&#39;沿着&#39;移动。和玩家一起。