【问题标题】:How do I make a transform Rotate n times per second?如何使变换每秒旋转 n 次?
【发布时间】:2019-05-22 18:50:10
【问题描述】:

我希望它以从 0 到非常快的速度旋转。 但是,如果我将自旋的值更改为 10,它几乎不会移动,而 200 会使它缓慢移动。 2000 让它移动得很快,但那有多快呢?如果我想让它每秒旋转 10 次,我该如何使用 Rotate 来做到这一点?

public float rotationSpeed;

private void Update()
{
  scaling.objectToScale.transform.Rotate(Vector3.up, rotationSpeed * Time.deltaTime);
}

【问题讨论】:

  • 所以你可以微调我假设的速度。
  • 因为这是函数的行为
  • 我将问题编辑为更适合 Stack Overflow。以前,它太模糊而无用。

标签: c# unity3d


【解决方案1】:

您使用它的方式,rotationSpeed 是每秒转动角度的度量

Rotate 的第二个参数需要旋转角度数。

Time.deltaTime 是自上一帧以来经过的秒数。

每秒 10 度意味着它每 36 秒旋转一次 (360/10 = 36)。

每秒 2000 度意味着它每 0.18 秒旋转一次 (360/2000 = 0.18),换句话说,它每秒旋转 5.56 次 (2000/360 = 5.56)。

如果您想每秒旋转n 次,请执行以下操作:

rotationSpeed = n * 360f;

// ...

scaling.objectToScale.transform.Rotate(Vector3.up, rotationSpeed * Time.deltaTime);

如果您想用n 秒旋转一次,请执行以下操作:

rotationSpeed = 360f / (float)n;

// ...

scaling.objectToScale.transform.Rotate(Vector3.up, rotationSpeed * Time.deltaTime);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 2021-03-21
    相关资源
    最近更新 更多