【问题标题】:How do I stop having my Z axis do a 180 on me如何停止让我的 Z 轴对我做 180 度旋转
【发布时间】:2023-02-07 04:44:51
【问题描述】:

我正在尝试在 vr 中为我的画布创建一个广告牌效果,它会在 y 轴上(从一侧到另一侧)跟随我的玩家,在大多数情况下,我的代码有效,并且当我绕过它时它只会绕着自己旋转。但是,当我出于某种原因进行完整循环时,我的 z 轴上升 180 度,显示我的画布上下颠倒。我将如何解决这个问题?

这是我当前的代码 `公共类广告牌:MonoBehaviour { /Ce script sert a creer un effet billboard sur nos texte,alors il suiveront la camera du joueur/ public Camera _playerCamera;

private void FixedUpdate()
{
    transform.LookAt(transform.position + _playerCamera.transform.rotation * Vector3.forward, _playerCamera.transform.rotation.y * Vector3.up);
}

}`

结果:

当我做一个完整的循环时:

【问题讨论】:

    标签: c# unity3d user-interface canvas rotation


    【解决方案1】:

    看起来你过于复杂了。尝试更简单的方法,例如:

    transform.LookAt(_playerCamera.transform, _playerCamera.transform.up);
    

    该函数将变换作为目标,因此只需让它直接看着相机即可。

    如果你想让它只在 Y 轴上旋转,那么你可以这样做:

    Vector3 flatOffset = _playerCamera.transform.position-transform.position;
    flatOffset.y = 0;
    transform.rotation = Quaternion.LookRotation(flatOffset, _playerCamera.transform.up);
    

    此外,这在 Update() 中可能会更好,因为它会影响每个渲染帧需要完成的事情,而不是在 FixedUpdate() 中,后者更多地用于物理等背景模拟,并且每帧可能运行多次。

    【讨论】:

      猜你喜欢
      • 2019-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多