gpt4 book ai didi

c# - 如何在 Unity 3D 中处理体重秤?

转载 作者:行者123 更新时间:2023-11-30 20:36:41 24 4
gpt4 key购买 nike

目前我正在使用 C# 统一创建一个 2d 平台游戏,我想知道我将如何创建一个如下所示的体重秤。 enter image description here

为了解释,我想要这样当一个沉重的 rigidbody2d 被放置在其中一个秤上时,另一个秤向上移动,反之亦然。我也希望它能够在重量相等的情况下保持平衡。我将如何着手解决这个问题?是否有一个组件可以使这很容易完成?

最佳答案

数学

首先,据我所知,没有任何组件可以为您执行此操作。我们只需要自己做一些物理。 如果您不关心数学并且只想看看您应该做什么,请跳到底部。让我们假设有两个盒子,一个在左边的拉杆上,一个在右边。我假设带绳子的滑轮装置是无摩擦且无质量的。在这种情况下,我们可以像这样绘制图表:

enter image description here

W1是左框的权重,W2是右框的权重。 T 是由两个盒子引起的绳索张力。现在让我们只看左边的框:

enter image description here

x 方向的力总和为 Fx_1 = T - W_1,因为我们选择右侧作为正方向。让我们应用牛顿第二定律,力 = 质量 * 加速度:M_1 * a_1 = T - M_1 * gM_1 是盒子的质量,a_1 是盒子的净加速度,g 是重力加速度。让我们将其重写为:T = M_1 * a_1 + M_1 * g

现在让我们看看右边的框:

enter image description here

让我们对 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_1a_2 实际上是相同的值。所以我们可以这样重写:

a(M_1 + M_2) = g(M_2 - M_1)
Rewrite: a = g(M_2 - M_1) / (M_1 + M_2)

结论

因此,系统的净加速度向右 g(M_2 - M_1)/(M_1 + M_2)。因此,如果您知道两个盒子的质量,并且知道重力加速度(您可能一开始就设置了这些值),那么这个公式会告诉您右盒子下落的速度和左盒子上升的速度。

如果等式给出负值,则意味着左边的盒子比右边的盒子重。然后,该公式会告诉您左边的盒子下降的速度有多快,右边的盒子上升的速度有多快。

如果质量相等,则系统的净加速度将为 0,两个盒子都不会移动。

如何在 Unity 中执行此操作

你知道你的盒子的质量,你知道两个盒子的加速度与上面的公式 (a = g(M_2 - M_1)/(M_1 + M_2))。因此,将脚本附加到您要移动的任何东西并编写以下内容:

this.GetComponent<Rigidbody>().AddForce(Vector3.down * MASS_OF_THIS_OBJECT * CALCULATED_ACCELERATION);

那应该行得通。如果没有,请告诉我,我会修正我的答案。

关于c# - 如何在 Unity 3D 中处理体重秤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36702654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com