transform.localEulerAngles += new Vector3(30.0f, 0.0f, 0.0f);
Вот для привычных градусов.
Но есть ограничения, лучше использовать кватернионы.
Надо повернуть объект направно (то есть вокруг оси Y, так как она напрваленна вверх) на 30 градусов:
Quaternion rightRotation = Quaternion.AngleAxis(30.0f, Vector3.up);
transform.rotation = transform.rotation * rightRotation;
Для создания сложных вращений кватернионы перемножаются. Порядок умножения имеет значение: в моем примере объект будет поворачиваться относительно локальной оси Y, если написать transform.rotation = rightRotation * transfrom.rotation, тогда объект будет поворачиваться относительно глобальной оси Y.
Что за вектор3? Откуда такое большое постоянно количество точек?
|
Какие еще точки? Это C#, не блитз. Vector3 - класс, описывающий 3д вектор. Векторы используются для обозначения позиции, скорости, ускорения, силы и т.д. Также в методе Quaternion.AngleAxis вектор используется для обозначения оси, вокруг которой производится вращение.
Теперь задача - заставить его двигаться прямо. сначала заставим двигаться прямо по глобальным координатам. потом, в зависимости от собственного поворота.
|
Курсоры (или WASD) вправо/влево - "двигаться прямо", вверх/вниз - "двигаться прямо учитывая собственное вращение"
using UnityEngine;
public class TestLookAt : MonoBehaviour
{
public Transform TargetObject;
void Start()
{
}
void Update()
{
transform.LookAt(TargetObject);
transform.position += transform.forward*Input.GetAxis("Vertical")*Time.deltaTime*30.0f;
transform.position += Vector3.forward*Input.GetAxis("Horizontal")*Time.deltaTime*30.0f;
}
}
"Сложности" созданы для удобства, как бы странно это не казалось.