Всем привет. Этот код вращает мой объект по "y" оси. А как я могу поменять на "x"?
using System.Collections; using System.Collections.Generic; using UnityEngine;public class Corei7_anim : MonoBehaviour {
public float speed, tilt; private Vector3 target = new Vector3(0, 0, 0); // Use this for initialization void Start () { } // Update is called once per frame void Update () { transform.Rotate(Vector3.up * tilt); }}
Как-то так:
Transform transform;
void Start()
{
transform = GameObject.GetComponent<Transform>();
// Получаем ссылку на компонент Transfrom после первого кадра
// Start() можно заменить на Awake(), если хочется
// Тогда будем получать ссылку до старта сцены
}
void Update()
{
transform.Rotate(Vector3.up * 4f * Time.deltaTime);
// Вращаем объект вокруг своей оси
// Важно понимать какой вектор отвечает за ось
// Глянем в доки. Vector3.up - это вектор (0, 1, 0). Отлично, подходит
}
P.S. Со скриптом в GetComponent()
мог немного накосячить, давно не пишу на шарпе и не работаю с Unity, но вроде всё верно. Также постоянно в Update()
писать transfrom.Rotate()
без взятия ссылки на компонент Transfrom
- пример плохого кода. Потому что transform
в Unity автоматически выполняет функцию взятия ссылки на компонент, но не сохраняет её. То есть вы выполняете лишнюю операцию каждый кадр.
Если у вас модель с неправильно настроенным вращением, то нужно использовать другие вектора. Если вам сложно понять вокруг какого вектора будет двигаться модель,вы можете нарисовать этот вектор с помощью функции Debug.DrawRay()
Например, так:
Debug.DrawRay(transform.position, Vector3.forward, Color.red);
Таким образом в редакторе будет отображён луч из объекта по направлению Vector3.forward
Документацию к Debug.DrawRay()
можно найти тут
Также, чтобы не сильно париться, можно просто удочерить модель к пустому объекту и вешать скрипт уже на пустой объект, либо изначально пытаться получить родителя у объекта в скрипте, а если родителя нет, то за Transform
вращения брать сам объект.
Но это тоже не самый лучший вариант. Гораздо лучше починить модель в каком-нибудь 3D редакторе и сделать импорт модели заново.
В любом случае, какой вариант выбирать - решать вам.
Решение:
transform.Rotate(Vector3.forward * tilt);
Возможные значение forward, fwd, up, down, left, right. (Так же есть one и zero но ничего не поменялось)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Работал работал себе SOAP под IIS 6 на NET 20, и спустя последнюю неделю начал выдавать такую ошибку (для запроса Soap 1
ЗдравствуйтеВ Viewport3D добавляю линию, линия рисуется без проблем, методом из библиотеки 3DTools
Добрый вечер, столкнулся с такой проблемойСоздаю задание в планировщике задач