Unreal Engine 4 http://uengine.ru/forum/ |
|
Механика поведения персонажа из TeeWorlds http://uengine.ru/forum/viewtopic.php?f=3&t=12815 |
Страница 1 из 2 |
Автор: | joylz [ 05 дек 2017, 20:49 ] |
Заголовок сообщения: | Механика поведения персонажа из TeeWorlds |
Всем привет. Уже много дней сижу над построением логики/физики главного персонажа. А точнее над реализацией хука. Вот ссылка для наглядности https://youtu.be/m4VyCwH4UJs И так, я получил координаты сцепления хука с поверхностью через Line Trace После этого блока из выхода должна выходить информация о положении персонажа. Основная особенность механики -Если не жать клавиш движения вперед/назад он полетит по данной траектории(синий - хук, красный - вектор движения, до столковения с землей) При нажатии кнопки вправо он начнет как бы описывать круг вокруг точки прикосновения. Это очень важно. Как только клавиша отпускается у персонажа, если начал уже то самое описывание круга, скорость обода уменьшается. Был вариант создать Spring Arm, прикрепить и указывать координаты вращения, но в таком случае персонаж двигается статично/ровно Launch Character задает импульс для персонажа - высчитывания координат для нормального движения анриал Ещё был вариант через тайм лайн, но в таком случае у него всегда будет одинаковая амплитуда Я лазил в исходнике игры, но там я не нашел нечего ценного для решения проблемы. Если нужно прикреплю, код на C++ Подскажите на ход мыслей - я не знаю, что можно ещё придумать( |
Автор: | Snake [ 08 дек 2017, 00:22 ] |
Заголовок сообщения: | |
физический движек если использовать? если нет то тогда гуглим - физика маятник. |
Автор: | joylz [ 09 дек 2017, 01:34 ] |
Заголовок сообщения: | Re: |
Snake писал(а): физический движек если использовать? если нет то тогда гуглим - физика маятник. С физикой не получится, и с Physics Constraints Actors тоже не выйдет. Нужно рассчитывать не только притягивание, но и момент закручивания. Я думал над тем, чтобы отключать гравитацию и применять к мовмент моду функцию Launch Character. А при зажатии соответствующих кнопок для коррекции направления (A - влево, D - вправо) ускорять чаректора в соответсвующем направлении. Таким образом, по задумке, персонаж начнет закручиваться (когда вектор направления по горизонтали сильнее вектора во вертикали) |
Автор: | icms [ 09 дек 2017, 02:28 ] |
Заголовок сообщения: | |
Не очень понял почему с физикой не получится. Ну болтается он, гравитация включена, по нажатию кнопок даём импульс по направлению и он будет раскачиваться. Или я что то не понял? |
Автор: | Snake [ 09 дек 2017, 07:27 ] |
Заголовок сообщения: | |
Launch Character уже подразумевает использование физики... я солидарен с icms: воссоздать маятник со помощью физ инструментов движка, и добавлять в систему свои силы для изменений. -Простое решение. но и математически задача не сверх сложная посчитать все самому (по сути сделать компонент управляемого маятника) |
Автор: | joylz [ 10 дек 2017, 03:18 ] |
Заголовок сообщения: | Re: |
Snake писал(а): Launch Character уже подразумевает использование физики... я солидарен с icms: воссоздать маятник со помощью физ инструментов движка, и добавлять в систему свои силы для изменений. -Простое решение. но и математически задача не сверх сложная посчитать все самому (по сути сделать компонент управляемого маятника) Маятник не подошел, потому что на большой скорости хук растягивается. А у Physics Constraints ограничивается область - он скрепляет как цепь. Математически - я не нашел способ это сделать. У меня такие непонятности: -Уменьшать ли скорость притягивания у Launch Character когда длина цепи слишком большая? Или всегда равна одному числу? -После того как применяю импульс происходит резонанс в самой точки относительно оси X, чего точно не нужно. Если брать обратный импульс для торможения - как узнать когда его нужно применять. -При зажатии клавиш этот самый импульс по оси Х(имхо) должен усиливаться в указанную сторону, или снижаться, если зажата противоположная клавиша. Вся суть этой баллады в том, что нужно не просто притягивание под нужным углом, а ещё и закручивание, если персонаж уже двигался в этом направлении или зажал кнопку в этом направлении. Увы у меня не получается вывести эту формулу уже около 2х недель |
Автор: | Prytaleks [ 10 дек 2017, 12:54 ] |
Заголовок сообщения: | |
есть еще AddForce, это вроде импульса, но действует мягко. |
Автор: | Snake [ 10 дек 2017, 13:30 ] |
Заголовок сообщения: | |
Цитата: Математически - я не нашел способ это сделать. все же известно: гравитацция и прилагаемые силы, угол отклонения маятника Траектория всегда круг, вектор скорости всегда перпендекулярен вектору длине маятника, масса и длина маятника задается. все силы теряют часть енергии при приложении силы на сжатие или растяжение длины.(косинус вектора силы, к касательной траектории окружности). добавить коофициент затухания колебаний если нужно. в итоге: нужна функция которая за дельта время вводные преобразовывает в новые кординаты маятника. и функция которая добаляет внешние силы маятнику. оформляем это одним компонентом, включаем его когда нужно , и каждый тик устанавливаем новую позицию актора. формулы есть на википедии. не тянет на сверх задачу... что конкретно не полусается? |
Автор: | joylz [ 10 дек 2017, 15:27 ] |
Заголовок сообщения: | Re: |
Prytaleks писал(а): есть еще AddForce, это вроде импульса, но действует мягко. Да, но он работает только с включенной физикой. При включении физики мовмент контрол теряется |
Автор: | joylz [ 10 дек 2017, 15:57 ] |
Заголовок сообщения: | Re: |
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 |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |