【问题标题】:How can i get the velocity of a rigidbody moved by a joint?如何获得由关节移动的刚体的速度?
【发布时间】:2012-10-03 17:11:57
【问题描述】:

我在一个有 2 个对象的项目中工作。 一个是通过使用 (Transform.position) 编辑位置来移动的 另一个有一个与第一个相连的弹簧接头。

这个想法是第二个对象将跟随第一个但是如果移动很小,第二个对象会改变他的颜色。

有什么想法吗?

【问题讨论】:

  • 你知道如何用物理学来做到这一点吗?如果不是,我建议尝试物理堆栈交换以获取更多信息或谷歌。
  • 无法从上面的描述中准确地说明您的要求,但为了阐明一点,您可以尝试从上面建议的物理角度来看待它。你可以试试这个例子:力=质量*加速度,所以如果你想弄清楚你知道力和质量,因为关节继承自具有质量变量的刚体。所以你求解加速度,即速度/时间。这是你的意思吗?

标签: c# unity3d


【解决方案1】:

如果我明白你想要什么,你想根据第二个对象的速度相对于第一个对象的速度来更改第二个对象的颜色。

因此,在循环中的某个点(可能是FixedUpdate 方法),您将测量速度之间差异的大小:

var diff = (gameObject1.rigidbody.velocity - gameObject2.rigidbody.velocity).magnitude;

(或用户 sqrMagnitude 性能)

之后,您可能只需要将diff 归一化到区间[0;1] 内,其中0 的速度没有差异,1 的差异很大,然后将其乘以颜色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多