Показать сообщение отдельно
Старый 16.08.2012, 03:48   #590
h1dd3n
Бывалый
 
Аватар для h1dd3n
 
Регистрация: 19.06.2008
Сообщений: 679
Написано 264 полезных сообщений
(для 450 пользователей)
Ответ: Вопросы от новичка

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;
    }
}
"Сложности" созданы для удобства, как бы странно это не казалось.
__________________

Последний раз редактировалось h1dd3n, 16.08.2012 в 04:56.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Данил (16.08.2012)