如何从1个对象获取rotation.y并将其应用于另一个对象

时间:2016-08-17 12:39:03

标签: unity3d rotation transform

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

public float rotatePositionY;

void Update () {

    rotatePositionY = transform.rotation.eulerAngles.y;

}

在另一个obj我创建了这个脚本,但我没有使用如何告诉团结协助doorRotateExport更正,我使用transform.rotation.eulerAngles.y收到错误。我认为它只适用于获取浮动而不是为了分配另一个浮点数。这是正确的方法吗?

public DoorRotateExport doorRotateExport;


void Start () {

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


void Update () {

    transform.rotation.eulerAngles.y = doorRotateExport;
}

3 个答案:

答案 0 :(得分:0)

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

    public DoorRotateExport doorRotateExport;

    void Start () {
        doorRotateExport = GameObject.Find("doorgim").GetComponent();
    }

    void Update () {
        Vector3 newAngle = transform.rotation.eulerAngles;
        newAngle = doorRotateExport.rotatePosistionY;
        transform.rotation.eulerAngles.y = newAngle;
    }

答案 1 :(得分:0)

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

通过在第二个对象的脚本上更改此行来解决此问题

transform.rotation.eulerAngles.y = doorRotateExport;

到此:

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

答案 2 :(得分:0)

我不建议像这样更新轮换,但如果没有其他解决方法,你必须用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;
}