2016-08-17 1 views
0

У меня есть дверь obj и стеклянная obj, и я открываю/закрываю скрипт на моей двери obj, и я хочу сделать поворот в каждом обновлении дверь и примените его к стеклянному объекту. Я создал этот скрипт для двери, а затем я хочу применить rotatePositionY на моем другом объекте.Как получить rotation.y от 1 предмета и применить его к другому

public float rotatePositionY; 

void Update() { 

    rotatePositionY = transform.rotation.eulerAngles.y; 

} 

на другой OBJ я создал этот сценарий, но я не использую, как сказать, единство помогать doorRotateExport правильно, я получаю сообщение об ошибке с помощью transform.rotation.eulerAngles.y. Я думаю, что это работает только для получения float не для назначения другого float. Каков правильный способ сделать это?

public DoorRotateExport doorRotateExport; 


void Start() { 

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


void Update() { 

    transform.rotation.eulerAngles.y = doorRotateExport; 
} 
+1

P Утепленный стеклянный предмет внутри двери в инспекторе. Таким образом, когда вы перемещаете дверь, вся иерархия будет вести себя одинаково. – Cabrra

+0

^Да, он работает только в соответствующих ситуациях. Но в OP это требует только «y» компонента вращения. Так что это не будет хорошей идеей. –

ответ

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; 
    } 
0

Вы бросаете переменный типа DoorRotateExport к значению float.

Фикс, изменив эту строку на сценарий второго объекта

transform.rotation.eulerAngles.y = doorRotateExport; 

к этому:

transform.rotation.eulerAngles.y = doorRotateExport.rotatePosistionY; 
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; 
}