【问题标题】:How to get rotation.y from 1 object and apply it to another如何从 1 个对象获取 rotation.y 并将其应用于另一个对象
【发布时间】:2016-08-17 12:39:02
【问题描述】:

我有一个门 obj 和一个玻璃 obj,我将门打开/关闭脚本放在门 obj 上,我想在门的每次更新时进行旋转并将其应用于玻璃 obj。我为门创建了这个脚本,然后我想在我的另一个 obj 上应用 rotatePositionY

public float rotatePositionY;

void Update () {

    rotatePositionY = transform.rotation.eulerAngles.y;

}

在另一个 obj 上,我创建了这个脚本,但我没有使用如何告诉 unity 来帮助 doorRotateExport 正确,使用 transform.rotation.eulerAngles.y 时出现错误。我认为它仅适用于获取浮动而不是分配另一个浮动。哪种方法是正确的?

public DoorRotateExport doorRotateExport;


void Start () {

    doorRotateExport = GameObject.Find ("doorgim").GetComponent<DoorRotateExport> ();
}


void Update () {

    transform.rotation.eulerAngles.y = doorRotateExport;
}

【问题讨论】:

  • 把玻璃物体放在inspector的门里面。这样,当您移动门时,所有层次结构都将以相同的方式运行。
  • ^ 是的,它只适用于适当的情况。但在 OP 中,它只需要 y 旋转分量。所以这不是一个好主意。

标签: unity3d rotation transform


【解决方案1】:

此代码应该适用于您的第二个 obj:

公共 DoorRotateExport doorRotateExport; 无效开始(){ doorRotateExport = GameObject.Find("doorgim").GetComponent(); } 无效更新(){ Vector3 newAngle = transform.rotation.eulerAngles; newAngle = doorRotateExport.rotatePositionY; transform.rotation.eulerAngles.y = newAngle; }

【讨论】:

    【解决方案2】:

    您将DoorRotateExport 类型的变量转换为float 值。

    通过更改第二个对象的脚本中的这一行来解决此问题

    transform.rotation.eulerAngles.y = doorRotateExport;
    

    到这里:

    transform.rotation.eulerAngles.y = doorRotateExport.rotatePosistionY;
    

    【讨论】:

      【解决方案3】:

      我不建议像这样更新轮换,但如果没有其他解决方法并且您必须在 update() 方法中分配它,那么这里有一段工作代码:

      public DoorRotateExport doorRotateExport;
      
      void Start () 
      {
          doorRotateExport = GameObject.Find ("doorgim").GetComponent<DoorRotateExport> ();
      }
      
      void Update () 
      {
      
          Quaternion _rotation =  transform.rotation;
          _rotation.eulerAngles = new Vector3(_rotation.eulerAngles.x,doorRotateExport.transform.rotation.eulerAngles.y,_rotation.eulerAngles.z);
          transform.rotation = _rotation;
      }
      

      【讨论】:

        猜你喜欢
        • 2022-11-17
        • 1970-01-01
        • 2011-09-08
        • 2021-07-18
        • 2019-12-21
        • 2021-11-09
        • 1970-01-01
        • 2019-07-04
        • 2021-03-27
        相关资源
        最近更新 更多