Равномерное передвижение объекта по клику

Программирование на Юнити.

Равномерное передвижение объекта по клику

Сообщение andoriyu 10 мар 2010, 10:16

Приветствую. Я пытаюсь реализовать следующую идею: Камера с фиксированными углами наклона и высотой(как в торчлайте) следить за обьектом. Объект перемещается по клику. Путем гугления я составил следующий код:
Синтаксис:
Используется javascript
var rayCastPlane : Transform;
var speed : float =25;
function Update () {

 if (!Input.GetMouseButton (0))
        return;
 var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
 var hit : RaycastHit;

  if (Physics.Raycast (ray, hit, 100)) {
  Debug.DrawLine (Camera.main.transform.position, hit.point, Color.red);
         Debug.Log(hit.point);
  var wantedPosition= Vector3(hit.point.x, transform.position.y, hit.point.z);
  transform.position = Vector3.Lerp (transform.position, wantedPosition, Time.deltaTime);
  }
}

Как видно из кода объект преодолевает любое расстояние за одинаковое время, что есть (полная Ж) . Я понимаю, что в идела надо еще поискпути прикрутить, но сейчас ограничиваюсь простым хождением по прямой. Но если, кто-то подскажет как сразу с поиском пути сделать будет замечательно :) С меня нефть.

UPDATE: Извиняюсь, не думал, что это имеет значение, но объект который надо передвинуть является спрайтом (plane).
Последний раз редактировалось andoriyu 10 мар 2010, 12:17, всего редактировалось 2 раз(а).
andoriyu
UNец
 
Сообщения: 30
Зарегистрирован: 10 мар 2010, 10:00

Re: Равномерное передвижение объекта по клику

Сообщение Neodrop 10 мар 2010, 10:34

Учимся использовать тег syntax для нормальной подсветки кода. :-w
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Равномерное передвижение объекта по клику

Сообщение Neodrop 10 мар 2010, 10:39

Ваша глупость в этой строке : transform.position = Vector3.Lerp (transform.position, wantedPosition, Time.deltaTime);

Перемудрили малость. НА кой вам Lerp ? Используйте tranform.LookAt и transform.Translate с умножением на Time.deltaTime
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Равномерное передвижение объекта по клику

Сообщение andoriyu 10 мар 2010, 10:47

Neodrop писал(а):Ваша глупость в этой строке : transform.position = Vector3.Lerp (transform.position, wantedPosition, Time.deltaTime);

Перемудрили малость. НА кой вам Lerp ? Используйте tranform.LookAt и transform.Translate с умножением на Time.deltaTime

Спасибо, сейчас попробую. уже второй день пытаюсь сделать как надо :)

Neodrop писал(а):Учимся использовать тег syntax для нормальной подсветки кода. :-w

извиняюсь, не заметил этот тэг, увидел code и заюзал :)
andoriyu
UNец
 
Сообщения: 30
Зарегистрирован: 10 мар 2010, 10:00

Re: Равномерное передвижение объекта по клику

Сообщение andoriyu 10 мар 2010, 10:59

Neodrop писал(а):Ваша глупость в этой строке : transform.position = Vector3.Lerp (transform.position, wantedPosition, Time.deltaTime);

Перемудрили малость. НА кой вам Lerp ? Используйте tranform.LookAt и transform.Translate с умножением на Time.deltaTime


Что не получается:
Синтаксис:
Используется javascript
transform.Translate(Vector3.forward * Time.deltaTime, hit.transform);
 
идет тупо прямо, как сделать, чтобы шел в сторону хита?
andoriyu
UNец
 
Сообщения: 30
Зарегистрирован: 10 мар 2010, 10:00

Re: Равномерное передвижение объекта по клику

Сообщение Neodrop 10 мар 2010, 11:41

Синтаксис:
Используется javascript
transform.LookAt(какой-то вектор);
transform.Translate(Vector3.forward *  Time.deltaTime, hit.transform, Space.self);
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Равномерное передвижение объекта по клику

Сообщение andoriyu 10 мар 2010, 12:10

Neodrop писал(а):
Синтаксис:
Используется javascript
transform.LookAt(какой-то вектор);
transform.Translate(Vector3.forward *  Time.deltaTime, hit.transform, Space.self);


Код: Выделить всё
BCE0023: No appropriate version of 'UnityEngine.Transform.Translate' for the argument list '(UnityEngine.Vector3, UnityEngine.Transform, UnityEngine.Space)' was found.


И еще я забыл добавить, объект не должен крутиться, это биллбоард. Если я понял правильно то эти 2 строчки разворачивают его в сторону клика и передвигают вперед относительно себя самого, что ни есть хорошо в случае с биллбоардом.
andoriyu
UNец
 
Сообщения: 30
Зарегистрирован: 10 мар 2010, 10:00

Re: Равномерное передвижение объекта по клику

Сообщение Neodrop 10 мар 2010, 15:36

Блин, ну в справке поглядите, видать я попамяти написал криво про Translate
Чтоб не вращался, добавьте к объекту чайлд, крутите его, а Translate делайте в его координатной системе. Делов то.

Translate (translation : Vector3, relativeTo : Transform) : void

http://unity3d.com/support/documentatio ... slate.html
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Равномерное передвижение объекта по клику

Сообщение andoriyu 11 мар 2010, 06:00

Спасибо больше, теперь все как надо.
andoriyu
UNец
 
Сообщения: 30
Зарегистрирован: 10 мар 2010, 10:00


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


cron