Пятница, 29 Марта 2024, 08:03

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Vector3.Lerp и режим прицеливания
Vector3.Lerp и режим прицеливания
robertonoДата: Воскресенье, 23 Ноября 2014, 15:12 | Сообщение # 1
Чокнутый Кот
Сейчас нет на сайте
Помогите с прицеливанием в оружии.
Есть оружие, на нем как дочерний объект прикреплен пустой объект который обозначает точку где должна находится камера в режиме прицеливания.
Есть камера.
Нужно:
Мне нужно переместить оружие на место камеры. Но не относительно точки оружия. А относительно этой точки для прицеливания.

Тут я изобразил это biggrin

Зеленое - само оружие
Красное - точка прицеливания
Светло зеленое - камера

Нужно что бы оружие переместилось в точку камеры, но относительно красной точки.
Т.е. я не могу просто Gun.position = Camera.position , потому что нужно относительно красной точки.

Надеюсь я хотя бы что то понятно сказал и вы меня поняли biggrin
Спрашивайте если что то не понятно.. Заранее спасибо
RiftstalkerДата: Воскресенье, 23 Ноября 2014, 15:41 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Цитата robertono ()
Есть оружие, на нем как дочерний объект прикреплен пустой объект который обозначает точку где должна находится камера в режиме прицеливания.

Из этого я делаю вывод, что тебе нужно плавно переместить камеру поближе к оружию.

Цитата robertono ()
Нужно что бы оружие переместилось в точку камеры

Но тут ты опровергаешь это и говоришь, что нужно перемещать не камеру, а само оружие.

Цитата robertono ()
но относительно красной точки

Тут я вообще выпал. : )

Если тебе нужно переместить объект (оружие) за его дочерний объект (красная точка), тогда тебе нужно сместить его используя Transform.localPosition дочернего объекта. Т.е.
Код

gun.position = camera.position - redPoint.localPosition;


И причем тут Vector3.Lerp? Или ты хочешь что бы все плавно перемещалось? Тогда лучше использовать Vector3.SmoothDamp:
Код

void Update {
     Vector3 velocity = Vector3.zero;
     transform.position = Vector3.SmoothDamp(transform.position, target.transform.position + positionOffset, ref velocity, smoothTime);
}

Где smoothTime это желаемое время перемещения в секундах.
robertonoДата: Воскресенье, 23 Ноября 2014, 16:35 | Сообщение # 3
Чокнутый Кот
Сейчас нет на сайте
Riftstalker,
Ну вот, теперь используя ваши ответы я смогу скорректировать задачу smile

Цитата Riftstalker ()
Но тут ты опровергаешь это и говоришь, что нужно перемещать не камеру, а само оружие.

Да, нужно это.

Цитата Riftstalker ()
Если тебе нужно переместить объект (оружие) за его дочерний объект (красная точка), тогда тебе нужно сместить его используя Transform.localPosition дочернего объекта. Т.е.
Код

gun.position = camera.position - redPoint.localPosition;

Думаю это то, что нужно.

Цитата Riftstalker ()
И причем тут Vector3.Lerp? Или ты хочешь что бы все плавно перемещалось? Тогда лучше использовать Vector3.SmoothDamp:

Раньше всегда лерп использовал. Чем SmoothDamp лучше?

Добавлено (23 ноября 2014, 16:35)
---------------------------------------------
Отличается тем, что сглаживание не линейное?

RiftstalkerДата: Воскресенье, 23 Ноября 2014, 20:31 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Цитата robertono ()
Отличается тем, что сглаживание не линейное?

Ага.
EchoITДата: Воскресенье, 23 Ноября 2014, 22:03 | Сообщение # 5
старожил
Сейчас нет на сайте
robertono, про MoveTowards знаешь? В большинстве случаев гораздо лучше Lerp'а.

Долгожданный анонсик: State of War

Сообщение отредактировал EchoIT - Воскресенье, 23 Ноября 2014, 22:03
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Vector3.Lerp и режим прицеливания
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг