【问题标题】:Untiy Make an object rotate along axis its moving onUnity 使对象沿其移动的轴旋转
【发布时间】:2016-02-02 18:17:30
【问题描述】:

我想制作一个物体(比如说一个立方体),在它移动的同一轴上以稳定的速度旋转。因此,如果它从 X 到 Z 的方向改变,那么旋转将从 X 轴进入 Z 轴,然后继续在 Z 轴上旋转。

我将如何实现这一目标?这是我目前所拥有的,立方体只是在z轴上来回旋转一定度数。

public float Angle;
public float Period;

void Update()
{
    Animate();
}

void Animate()
{
    _time = _time + Time.deltaTime;
    float phase = Mathf.Sin(_time / Period);
    transform.localRotation = Quaternion.Euler(new Vector3(0f, 0f, phase * Angle));
}

【问题讨论】:

  • On the same axis it's moving on 如果运动不完全在某个轴上,将会很困难。考虑速度向量v = (0,1,2)。由此产生的轮换会去哪里?你可以尝试例如归一化速度矢量(为您提供对象移动的大致方向),然后使用该矢量旋转(乘以用于控制旋转速度的常数)。
  • 一般来说,不要出于任何原因使用四元数。只需使用一个简单的 RotateAround 调用。
  • @JoeBlow 叶,谢谢。刚刚测试了它,它更容易。
  • 太棒了.. 下次质量检查见

标签: c# unity3d rotation quaternions


【解决方案1】:

随便用

RotateAround

注意一般不要出于任何原因使用四元数。

关于使用 RotateAround 的问题有 1000 多个,所以只需 google。在你的情况下,听起来你会改变(lerping,无论如何)旋转轴本身。

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    相关资源
    最近更新 更多