目前我正在使用C#创建一个统一的2d平台游戏,我想知道如何制作如下所示的称重秤。
为了解释,我想要它,以便当一个重型刚体2放置在其中一个刻度上时,另一个刻度向上移动,反之亦然。如果重量相等,我也希望它能够平衡。我怎么去接近这个?是否有一个组件可以使这很容易实现?
答案 0 :(得分:4)
首先,我知道没有任何组件可以帮到你。我们自己必须做一些物理。 如果您不关心数学并且只是想看看应该做什么,请跳到最底层。让我们假装有两个盒子,一个在左侧拉出器上,另一个在右侧。我假设滑轮装置上的绳子是无摩擦和无质量的。在这种情况下,我们可以像这样绘制图表:
W1
是左框的权重,W2
是右框的权重。 T
是由两个箱子引起的绳索张力。我们暂时只看左框:
x方向的力的总和是Fx_1 = T - W_1
,因为我们选择了正确的方向。让我们应用牛顿第二定律,力=质量*加速度:M_1 * a_1 = T - M_1 * g
。 M_1
是框的质量,a_1
是框的净加速度,g
是由于重力引起的加速度。让我们重写如下:T = M_1 * a_1 + M_1 * g
。
现在让我们看看右边的方框:
让x方向的力相加:Fx_2 = W_2 - T
。我们也要重写一遍:T = W_2 - Fx_2
。让我们应用牛顿第二定律:T = M_2 * g - M_2 * a_2
。对于右侧和左侧的框,拉力是相同的,因此我们可以通过设置T = T
来组合这两个方程:
M_1 * a_1 + M_1 * g = M_2 * g - M_2 * a_2
Rewrite: M_1 * a_1 + M_2 * a_2 = M_2 * g - M_1 * g
Rewrite: M_1 * a_1 + M_2 * a_2 = g(M_2 - M_1)
在这种情况下,当你在平衡秤或滑轮上放两个东西时,左右两个方框的刻度提示相同,对吗?刻度的左侧将以与右侧上升相同的速率下降。因此,a_1
和a_2
实际上是相同的值。所以我们可以像这样重写:
a(M_1 + M_2) = g(M_2 - M_1)
Rewrite: a = g(M_2 - M_1) / (M_1 + M_2)
因此,系统对 如果等式给出一个负值,则表示左侧的框比右侧的框重。然后,公式会告诉您左侧方框的下降速度以及右侧方框的上升速度。 如果质量相等,那么系统的净加速度为0,两个箱子都不会移动。 你知道盒子的质量,你知道上面两个方框的加速度( 那应该有用。如果它没有,请告诉我,我会解决问题。g(M_2 - M_1) / (M_1 + M_2)
的右侧的净加速度。因此,如果您知道两个盒子的质量,并且您知道由于重力引起的加速度(您可能将这些值设置为开头),则此公式会告诉您右侧框的下降速度以及左侧框的上升速度。< / p>
如何在Unity中执行此操作
a = g(M_2 - M_1) / (M_1 + M_2)
)。因此,请将脚本附加到要移动的任何内容上,然后编写以下内容:this.GetComponent<Rigidbody>().AddForce(Vector3.down * MASS_OF_THIS_OBJECT * CALCULATED_ACCELERATION);