Полезное

Мы Вконтакте

Discord канал

#
Пред.
12
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 7
Всем привет. Уже много дней сижу над построением логики/физики главного персонажа.
А точнее над реализацией хука.
Вот ссылка для наглядности
https://youtu.be/m4VyCwH4UJs
И так, я получил координаты сцепления хука с поверхностью через Line Trace
Изображение
После этого блока из выхода должна выходить информация о положении персонажа.
Основная особенность механики
-Если не жать клавиш движения вперед/назад он полетит по данной траектории(синий - хук, красный - вектор движения, до столковения с землей)
Изображение
При нажатии кнопки вправо он начнет как бы описывать круг вокруг точки прикосновения. Это очень важно. Как только клавиша отпускается у персонажа, если начал уже то самое описывание круга, скорость обода уменьшается.

Был вариант создать Spring Arm, прикрепить и указывать координаты вращения, но в таком случае персонаж двигается статично/ровно
Launch Character задает импульс для персонажа - высчитывания координат для нормального движения анриал
Ещё был вариант через тайм лайн, но в таком случае у него всегда будет одинаковая амплитуда

Я лазил в исходнике игры, но там я не нашел нечего ценного для решения проблемы. Если нужно прикреплю, код на C++

Подскажите на ход мыслей - я не знаю, что можно ещё придумать(
Аватара пользователя
Пользователь
Сообщения: 2319
физический движек если использовать?
если нет то тогда гуглим - физика маятник.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 7
Snake писал(а):
физический движек если использовать?
если нет то тогда гуглим - физика маятник.

С физикой не получится, и с Physics Constraints Actors тоже не выйдет.
Нужно рассчитывать не только притягивание, но и момент закручивания.
Я думал над тем, чтобы отключать гравитацию и применять к мовмент моду функцию Launch Character.
А при зажатии соответствующих кнопок для коррекции направления (A - влево, D - вправо) ускорять чаректора в соответсвующем направлении. Таким образом, по задумке, персонаж начнет закручиваться (когда вектор направления по горизонтали сильнее вектора во вертикали)
Аватара пользователя
Пользователь
Сообщения: 469
Не очень понял почему с физикой не получится. Ну болтается он, гравитация включена, по нажатию кнопок даём импульс по направлению и он будет раскачиваться. Или я что то не понял?
_________________
Project SKIT
Аватара пользователя
Пользователь
Сообщения: 2319
Launch Character уже подразумевает использование физики...
я солидарен с icms: воссоздать маятник со помощью физ инструментов движка, и добавлять в систему свои силы для изменений. -Простое решение.
но и математически задача не сверх сложная посчитать все самому (по сути сделать компонент управляемого маятника)
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 7
Snake писал(а):
Launch Character уже подразумевает использование физики...
я солидарен с icms: воссоздать маятник со помощью физ инструментов движка, и добавлять в систему свои силы для изменений. -Простое решение.
но и математически задача не сверх сложная посчитать все самому (по сути сделать компонент управляемого маятника)

Маятник не подошел, потому что на большой скорости хук растягивается. А у Physics Constraints ограничивается область - он скрепляет как цепь.
Математически - я не нашел способ это сделать.
У меня такие непонятности:
-Уменьшать ли скорость притягивания у Launch Character когда длина цепи слишком большая? Или всегда равна одному числу?
-После того как применяю импульс происходит резонанс в самой точки относительно оси X, чего точно не нужно. Если брать обратный импульс для торможения - как узнать когда его нужно применять.
-При зажатии клавиш этот самый импульс по оси Х(имхо) должен усиливаться в указанную сторону, или снижаться, если зажата противоположная клавиша.
Вся суть этой баллады в том, что нужно не просто притягивание под нужным углом, а ещё и закручивание, если персонаж уже двигался в этом направлении или зажал кнопку в этом направлении.

Увы у меня не получается вывести эту формулу уже около 2х недель
Аватара пользователя
Пользователь
Сообщения: 4069
есть еще AddForce, это вроде импульса, но действует мягко.
Аватара пользователя
Пользователь
Сообщения: 2319
Цитата:
Математически - я не нашел способ это сделать.

все же известно: гравитацция и прилагаемые силы, угол отклонения маятника
Траектория всегда круг, вектор скорости всегда перпендекулярен вектору длине маятника, масса и длина маятника задается.
все силы теряют часть енергии при приложении силы на сжатие или растяжение длины.(косинус вектора силы, к касательной траектории окружности).
добавить коофициент затухания колебаний если нужно.
в итоге:
нужна функция которая за дельта время вводные преобразовывает в новые кординаты маятника. и функция которая добаляет внешние силы маятнику.

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

не тянет на сверх задачу... что конкретно не полусается?
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 7
Prytaleks писал(а):
есть еще AddForce, это вроде импульса, но действует мягко.

Да, но он работает только с включенной физикой. При включении физики мовмент контрол теряется
Аватара пользователя
Пользователь
Сообщения: 7
Snake писал(а):
все же известно: гравитацция и прилагаемые силы, угол отклонения маятника
Траектория всегда круг, вектор скорости всегда перпендекулярен вектору длине маятника, масса и длина маятника задается.
все силы теряют часть енергии при приложении силы на сжатие или растяжение длины.(косинус вектора силы, к касательной траектории окружности).
добавить коофициент затухания колебаний если нужно.
в итоге:
нужна функция которая за дельта время вводные преобразовывает в новые кординаты маятника. и функция которая добаляет внешние силы маятнику.

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

не тянет на сверх задачу... что конкретно не полусается?


Он крутится не просто по кругу, а с уменьшением радиуса. Или увеличивается если слишком большая скорость. Если не нажаты клавиши движения и персонаж стоит на месте - он просто притянется в заданную точку, без кружения. Если разогнаться, то его закрутит. ПРИЧЕМ - Нужно жать соответствующие движению клавиши направления (A или D). Если не будет такого, то сила угаснет и он притянется.
И постоянно мешает резонанс. Его нужно как-то останавливать.
Какую именно силу прилагать тоже не знаю, как можно угадать направление если на перса действет гравитаия, аир контрол чарактера(управление в воздухе) и его текущий импульс

Я скорее всего не понял как вы хотели сделать маятник. С помощью того компонента, о котором я говорил раньше такое дело не провернешь.

Изображение
Изображение
Изображение
Изображение
Те же, только ссылками
http://s1.uploadpics.ru/images/-J8VjJ5VlX.png
http://s1.uploadpics.ru/images/b1soik54eX.png
http://s1.uploadpics.ru/images/ZynZ-gcNem.png
http://s1.uploadpics.ru/images/b1UfYx54lX.png


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

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница