Полезное

Мы Вконтакте

Discord канал

#
Пред.
12
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 20
Всем привет.
Хочу заставить двигаться "космический корабль"
Насколько я понял лучше всего это делается через add force.
Я создал такую конструкцию:
Изображение
Но корабль стоит на месте.
Где я туплю?
Аватара пользователя
Администратор
Сообщения: 1581
Force работает на физических объектах. Более того, ваше событие R не вызывает Force постоянно, а только в момент нажатия.

Я бы советовал использовать Add Movement Input для таких целей. Конечно, если у вас Pawn или Character класс. Если Actor, тогда Add Relative Offset на каждый Tick при нажатии на кнопку. Вроде этого:
Изображение

А ещё лучше сделать Input'ы в Edit > Project Preferences > Inputs на Axis inputs, что бы нажатия срабатывали каждый тик и выдавали сторону нажатия (W=1, S=-1).
_________________
Просьба, не писать вопросы по движку в ЛС. Я не единственный, кто знает UE4, и поэтому пишите на форум или в группу.
Аватара пользователя
Пользователь
Сообщения: 20
Спасибо за ответ но он мне не подходит :)
Дело в том, что делая локал офсет, то куда бы не повернулся корабль он будет двигаться по локал офсету. Т.е. условно если едем вперед то куда бы не повернулся мы будем двигаться в "новый" перед.

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

По сути мне нужна модель движения тела в космосе с приложением сил к телу (тяга двигателей в различные направления)

Пример на пальцах:
*) Тело покоится.
*) Прилагаем к телу силу и тело начинает постоянно двигаться вперед (для стороннего наблюдателя) без других сил (космос типа)
*) Крутим тело вокруг своей оси в право на 90%, но вектор движения не меняется. Тело летит боком для стороннего наблюдателя.
*) Снова прилагаем силу к телу и тело начинает под углом 45% (для стороннего наблюдателя) так как старый вектор движения мы не погасили (не остановили тело)

Надеюсь понятно изложил. Если нет нарисую схемы.
Аватара пользователя
Пользователь
Сообщения: 216
Tonakien,
первое, что я б сделал - начал читать документацию и разбор примеров от Epic, в ContentExamples есть уровень Physics, рекомендую к изучению..
но если вам лень, то дам подсказку - вам не хватает в объекте Physics Thrusters
_________________
Активные темы форума
Аватара пользователя
Пользователь
Сообщения: 110
Tonakien, изложил понятно. В окне создания нового проекта движок предлагает начать его не "с нуля", а использовать заготовки. Посмотрите касающийся косм.корабля шаблон-заготовку (тот, где вид сзади корабля), разберитесь, как там реализовано движение - думаю многое прояснится.

Если в двух словах, то на кнопки вешайте ускорение, которое в Event Tick пересчитывайте через delta seconds в приращение скорости. Которое прибавляйте к текущему вектору скорости. На тик выполняйте Add Offset, используя текущий вектор скорости.

При отсутствии нажатия и при ненулевой скорости можете приделать обратное ускорение.
Нужные Вам из 3х возможных поворотов реализуйте по похожей схеме или упрощённо, но отдельно.
Можете прикрутить ещё блоки Linear и Angular Damping на том же тике, если всё же решите подпустить немного вещества в Ваш вакуум ;)
Аватара пользователя
Пользователь
Сообщения: 20
Djeraff
Есть гдето хорошая обучалка физике в унриале? За твои ссылки спасибо, но по ним нифига не понятно.
Тем временем я изобрел самостоятельный велосипед :)
Вот как выглядит у меня придание тяги вперед/назад:
Изображение
Я руками создаю вектор движения из локального форвард вектора (для движения вперед). Умножаю его на дельту времени при холде кнопок управления.

Это позволяет мне крутить корабль как угодно в то время как он летит в заранее заданном направлении. Так же могу развернуться, приложить тягу и корабль "остановится".

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

ЗЫ
С физикой непонятки. Я приложил трастер к модели но трастер учитывает массу и центр масс и всякое такое которое мне нафиг не нужно. Моя модель корабля не летит вперед как я ожидаю, а начинает кувыкраться.
Аватара пользователя
Пользователь
Сообщения: 20
SaShka писал(а):
Tonakien, изложил понятно. В окне создания нового проекта движок предлагает начать его не "с нуля", а использовать заготовки. Посмотрите касающийся косм.корабля шаблон-заготовку (тот, где вид сзади корабля), разберитесь, как там реализовано движение - думаю многое прояснится.

Если в двух словах, то на кнопки вешайте ускорение, которое в Event Tick пересчитывайте через delta seconds в приращение скорости. Которое прибавляйте к текущему вектору скорости. На тик выполняйте Add Offset, используя текущий вектор скорости.

При отсутствии нажатия и при ненулевой скорости можете приделать обратное ускорение.
Нужные Вам из 3х возможных поворотов реализуйте по похожей схеме или упрощённо, но отдельно.
Можете прикрутить ещё блоки Linear и Angular Damping на том же тике, если всё же решите подпустить немного вещества в Ваш вакуум ;)

Во! По сути я сам допер до вашего предложения :)
Все сделал как вы указали (пост выше с моей конструкцией).
Все работает как мне нужно.
Но неужели нет чегото более элегантного?
Аватара пользователя
Пользователь
Сообщения: 110
Tonakien писал(а):
...
Но неужели нет чегото более элегантного?


Думаю, что если было бы, то эпики запилили бы эту элегантность в свои шаблоны-заготовки проектов. Но Вы же видели - там всё примерно так же, как и у Вас. Да и куда уж тут элегантнее - есть ведь минимальный набор логических шагов, которые нужно сделать, чтобы решить задачу. Без этого не получиться. Разве что их кто-то выполнит до нас и завернёт в некую внешнюю библиотеку. Но с такими пока не знаком. Но Вы эти шаги уже сделали самостоятельно. Теперь можете завернуть эту всю логику в функцию, назвать её MovePerTick и в остальном коде использовать уже как всего один блок. Вижу только такую возможность повышения элегантности для этого случая.
Аватара пользователя
Пользователь
Сообщения: 216
Tonakien
1. Запускаешь лаунчер
2. Заходишь в раздел Learn
3. Качаешь ContentExamples
4. Делаешь проект по ContentExamples
5. Открываешь полученный проект
6. Дальше смотришь File -> Open level и выбираешь уровень с примерами, которые хочешь изучить

Касательно физики открываешь пример, запускаешь его и смотришь где-что-как физичится. Собственно там есть стенд с ракетой, немного покурив его стало ясно, что для манипуляций над объектами, к этим объектам надо прикрутить "двигатели", этими двигателями являются Physics Thrusters, на карту добавляются из Place окна Modes Изображение
_________________
Активные темы форума
Аватара пользователя
Пользователь
Сообщения: 20
SaShka писал(а):
Теперь можете завернуть эту всю логику в функцию.

Вот это интересно. Как это делается? Можно ссылки на офф.туториал или какие то обучалки?


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

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