2016-07-27 4 views
0

Ну, я новичок в единстве 3d и C sharp. Я пытался сценарий повернуть свой объект. Но это не работает.Почему скрипт не вращает мой сферический объект?

Я следил за видео с youtube. Этот код работал на него. Но в моем случае это не работает.

Я добавил объект преобразования.

using UnityEngine; 
using System.Collections; 

public class cubescript : MonoBehaviour { 
    public Transform sphereTransform; 

    // Use this for initialization 
    void Start() { 
     sphereTransform.parent = transform; 


    } 

    // Update is called once per frame 
    void Update() { 
     transform.eulerAngles = new Vector3 (0, 180*Time.deltaTime, 0); 
    } 
} 

Это своего рода работает, но застрял на 2.981877-3 вращения Y .. И не вращается вокруг куба ..

+0

Вы хотите повернуть сферу вокруг куба? –

+0

yeah @MiladQasemi –

+0

Приложил ли вы этот скрипт к кубу? –

ответ

1

Проблема заключается в том, что вы пытаетесь повернуть, но eulerAngles устанавливает только АБСОЛЮТНЫХ углов (если вы хотите добавить углы к текущему ракурсу, вы будете использовать Rotate).

Итак, если вы используете transform.eulerAngles, вы будете все кадры, устанавливающие изменение угла на то, что возвращает 180 * Time.deltaTime, что будет зависеть от того, сколько FPS вы используете, вот почему вы получаете постоянное число.

Если вы используете transform.Rotate, он добавит новое изменение угла к раме текущего угла. Скажем, что вы хотите увеличить на 10 делений, поэтому кадр 1 = (0,0,0), кадр 2 = (0,10,0), кадр 3 = (0,20,0).

В eulerAngles вы получите все время (0,10,0), так как он устанавливает угол ABSOLUTE, Rotate добавляет к текущему углу то, что вы хотите.

Изменить этот

transform.eulerAngles = new Vector3 (0, 180*Time.deltaTime, 0); 

Для этого

transform.Rotate(new Vector3 (0, 180*Time.deltaTime, 0)); 

Это является официальной документации Unity для eulerAngle и Rotate

0

Как сказано в другом ответе, когда вы устанавливаете transform.eulerAngles, вы настраиваете абсолютное вращение. Вы можете использовать transform.Rotate(), но вы также можете использовать Time.time, чтобы обеспечить линейное вращение: transform.eulerAngles = new Vector3(0, 180*Time.time, 0);

+0

Было бы лучше, если бы вы отредактировали существующий ответ с добавлением! – Gusdor

Смежные вопросы