Quaternion.Slerp - Форум Игроделов
Ср, 24 Апр 2024, 01:05 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » МАНУАЛЫ И УРОКИ » Quaternion.Slerp (Кое-что получше)
Quaternion.Slerp
VolkOrievithДата: Сб, 19 Окт 2013, 18:13 | Сообщение # 1
Нет аватара
 
Сообщений: 222
Награды: 0
Репутация: 53
Статус: Offline
Я думаю многие использовали функцию Quaternion.Slerp(from, to, speed).
Вот тот-же принцип, но лучше(более расширенно управление этой функцией, нужно поворачивать два объекта: себя по горизонтале, дуло по вертикале, без дула - никак):
Код

var DownDistanse : float;
var UpDistanse : float;
var LeftDistanse : float;
var RightDistanse : float;
var TurnForceX : float; // сила вращения по горизонтале
var TurnForceY : float; // сила вращения по вертикале
var Gunpoint : GameObject; // дуло
var Target : GameObject; // цель

function Update (){
DownDistanse = Vector3.Distance(transform.position + Gunpoint.transform.TransformDirection(Vector3(0,-5,0)), Target.transform.position);
UpDistanse = Vector3.Distance(transform.position + Gunpoint.transform.TransformDirection(Vector3(0,5,0)), Target.transform.position);
RightDistanse = Vector3.Distance(transform.position + transform.TransformDirection(Vector3(5,0,0)), Target.transform.position);
LeftDistanse = Vector3.Distance(transform.position + transform.TransformDirection(Vector3(-5,0,0)), Target.transform.position);

transform.Rotate (0,(LeftDistanse - RightDistanse) * Time.deltaTime * TurnForceX, 0); // вычитаем из левой дистанции правую, умножаем на силу поворота, и поворачиваем себя на полученную величину.  
Gunpoint.transform.Rotate ((UpDistanse - DownDistanse) * Time.deltaTime * TurnForceY, 0, 0); // Такую-же манипуляцию проделываем с дулом.
}


Что-то непонятно? - Спрашивайте.
 
СообщениеЯ думаю многие использовали функцию Quaternion.Slerp(from, to, speed).
Вот тот-же принцип, но лучше(более расширенно управление этой функцией, нужно поворачивать два объекта: себя по горизонтале, дуло по вертикале, без дула - никак):
Код

var DownDistanse : float;
var UpDistanse : float;
var LeftDistanse : float;
var RightDistanse : float;
var TurnForceX : float; // сила вращения по горизонтале
var TurnForceY : float; // сила вращения по вертикале
var Gunpoint : GameObject; // дуло
var Target : GameObject; // цель

function Update (){
DownDistanse = Vector3.Distance(transform.position + Gunpoint.transform.TransformDirection(Vector3(0,-5,0)), Target.transform.position);
UpDistanse = Vector3.Distance(transform.position + Gunpoint.transform.TransformDirection(Vector3(0,5,0)), Target.transform.position);
RightDistanse = Vector3.Distance(transform.position + transform.TransformDirection(Vector3(5,0,0)), Target.transform.position);
LeftDistanse = Vector3.Distance(transform.position + transform.TransformDirection(Vector3(-5,0,0)), Target.transform.position);

transform.Rotate (0,(LeftDistanse - RightDistanse) * Time.deltaTime * TurnForceX, 0); // вычитаем из левой дистанции правую, умножаем на силу поворота, и поворачиваем себя на полученную величину.  
Gunpoint.transform.Rotate ((UpDistanse - DownDistanse) * Time.deltaTime * TurnForceY, 0, 0); // Такую-же манипуляцию проделываем с дулом.
}


Что-то непонятно? - Спрашивайте.

Автор - VolkOrievith
Дата добавления - 19 Окт 2013 в 18:13
Форум Игроделов » UNITY3D » МАНУАЛЫ И УРОКИ » Quaternion.Slerp (Кое-что получше)
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024