【问题标题】:C# compass rotation script in Unity3dUnity3d 中的 C# 指南针旋转脚本
【发布时间】:2015-09-27 11:05:48
【问题描述】:

我有一个指南针对象,它随着相机旋转和移动。因此,指南针对象的旋转和位置会随着玩家控制的相机进行调整。现在,在我的指南针上插了一根针 - 我想让针指向北方。

这很容易做到,但要让针指向北方的物体。但是针现在不跟随它放置的板(罗盘对象)。因此,我希望针相应地指向。换句话说,沿 y 轴单独旋转。

我不需要代码 - 我只需要大致了解如何做到这一点。 我真的很感激任何帮助:)

【问题讨论】:

    标签: c# unity3d rotation quaternions euler-angles


    【解决方案1】:

    我终于明白了 :D 这比预期的要容易得多...如果有人需要,这里是代码:

    using UnityEngine;
    using System.Collections;
    
    public class Compass : MonoBehaviour 
    {
        void Update () 
        {
             transform.localRotation = Quaternion.Euler(0, 360-transform.root.rotation.eulerAngles.y, 0);
        }
    }
    

    【讨论】:

    • 介意为这个解决方案分享你的层次结构(例如相机 -> 指南针 -> 针)?您的指南针游戏对象是否指向北方,而指针正好跟在后面?我正在尝试使用我的代码实现您的解决方案,但无法弄清楚您使用的设置。谢谢!
    【解决方案2】:

    我会尝试将从指南针位置指向目标的矢量投影到指针应该所在的平面上。 Vector.ProjectOnPlane 可能会有所帮助。 像这样的东西应该可以工作(尚未测试):

    Vector3 dir = compassPos - targetPos;
    Vector3 needleDir = Vector3.ProjectOnPlane(dir, compassNormal);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多