Показаны сообщения с ярлыком код. Показать все сообщения
Показаны сообщения с ярлыком код. Показать все сообщения
четверг, 5 апреля 2012 г.
Шейдеры
Шейдеры в Unity пишутся на специальном языке, который называется ShaderLab. Язык этот не сложный и в этой статье я его попытаюсь описать. Конечно большая часть этого урока – содержание справки Unity, но так как у многих проблемы с английским – этот урок будет полезным.
Кватернион
Что такое кватернион?
Кватернион представляет собой вращение на определенный угол вокруг произвольной оси. Любое вращение в Эйлеровом пространстве можно задать с помощью кватерниона.В Unity3D вращения задаются в кватернионах (Quaternion) не смотря на то, что есть доступ к Эйлеровым углам. Эйлеровы углы вычисляются из кватерниона при чтении и из Эйлеровых углов создается кватернион при присвоении.
Экранные координаты в мировые
Для того чтоб определить объект в пространстве находящийся под курсором необходимо:
1. Перевести экранные координаты указателя (мыши) в луч с использованием метода камеры camera.ScreenPointToRay()
2. Пустить луч с помощью физики с использованием метода Physics.Raycast()
3. Если луч попал в какой-то объект (объект должен иметь коллайдер, чтобы в него можно было попасть лучем).
4. Обработать результат.
среда, 4 апреля 2012 г.
Вращение камеры вокруг объекта
var target : Transform; //What to rotate around
var distance = 5.0; //How far away to orbit
var xSpeed = 125.0; //X sensitivity
var ySpeed = 50.0; //Y sensitivity
private var x = 0.0; //Angle of the y rotation?
private var y = 0.0; //Angle of the x rotation?
@script AddComponentMenu("Scripts/Mouse Orbit") //Add to menu
function Start() {Run this once at the start
//Initialize the angles
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
}
function LateUpdate() { //Every frame, do this as late as you can
if (target) {//There's a target
//Change the angles by the mouse movement
x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
//Rotate the camera to those angles
var rotation = Quaternion.Euler(y, x, 0);
transform.rotation = rotation;
//Move the camera to look at the target
var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
transform.position = position;
}
}
Скриптовые события
При разработке на Unity3d часто необходимо привязать выполнение своих функций к конкретному событию. В Unity3d таких событий довольно большое количество, в данном разделе я постараюсь описать самые используемые из них.
Данная функция вызывается каждый раз перед отображением очередного кадра. Самая используемая для расчетов игровых параметров. Но категорически не рекомендуется использовать в ней расчет физических показателей.
Данная функция вызывается каждый раз перед отображением очередного кадра. Самая используемая для расчетов игровых параметров. Но категорически не рекомендуется использовать в ней расчет физических показателей.
Update()
Подписаться на:
Сообщения (Atom)