Начало работы с физикой в ​​Unity

Моим самым слабым предметом в школе была физика, и она стала причиной многих ночных кошмаров по мере приближения экзаменов. Много Много Много…….. лет спустя физика все еще не моя сильная сторона, и поэтому я решил построить машину Руба Голдберга.

Для тех, кто не знает, что это такое, вот объяснение из Википедии:

Машина Руба Голдберга — это машина, специально разработанная для выполнения простой задачи косвенным и сверхсложным образом. Часто эти машины состоят из ряда простых устройств, связанных друг с другом для создания эффекта домино, в котором каждое устройство запускает следующее, а первоначальная цель достигается только после многих шагов.

Вот мой опыт его создания, и он оказался не таким простым, как я думал, хотя это буквально просто физические компоненты, которые применяются к игровым объектам, без какого-либо кодирования!

Настройка проекта и идеи Unity

  • Создал новый 3D проект.
  • Создал новую сцену
  • Создал свои различные папки (мой ocd, чтобы все было на своих местах)
  • Затем я нарисовал на старой доброй коре дерева (бумаге) то, каким должен быть узор.
    • Каких реакций я хочу,
    • Как я хочу, чтобы мяч струился,
    • Как мяч должен стартовать и выйти на сцену и,
    • Каким должен быть конечный результат.

грубая идея.gif

  • Я также использовал некоторые ресурсы 21-го века и погуглил несколько идей о том, как я хочу, чтобы моя машина Руба Голдберга работала.
  • Итак, в теории это было моим представлением о том, как я хотел, чтобы моя машина работала:
    • Мяч падает и приземляется на наклонную платформу
    • Мяч скатывается вниз и приземляется на следующий откидной плоский уровень.
      • Теперь здесь мяч может катиться вправо и удариться о навесную стену.
        • Толкание блока вверху стены
        • Толкание второго мяча с уровня
        • Спуск на несколько уровней
        • Удар по предыдущему навесному плоскому уровню
        • Скатывается вниз и падает на последний уровень
        • Скатывается в домино, из-за чего домино падает
        • А потом падает на землю
      • ИЛИ ЖЕ
        • Навесная стена для инвалидов
        • Мячи катятся вниз по уровню
        • Опускается на более низкий уровень
        • Скатывается вниз и падает на последний уровень
        • Скатывается в домино, из-за чего домино падает
        • А потом падает на землю

Создайте сцену

  • Имея свой рисунок, я теперь мог планировать, какие активы и игровые объекты мне нужны.
  • Получение разных уровней друг над другом, установка стен, наклонных уровней и т. д. заняло у меня большую часть времени, которое я использовал для создания этого тестового проекта.
  • Вся сцена буквально состоит из плоскостей, кубов и сфер.
  • Я сделал это очень простым, так как хотел сосредоточиться на физической части.
  • Я создаю новый материал для каждого объекта:
    • Щелчок правой кнопкой мыши в любом месте области проекта
    • Нажмите «Создать».
    • Нажмите на материал
    • Для этого упражнения я буквально просто меняю цвет альбедо на основных картах.

Материал-Shade.png

  • Перетащил недавно созданный материал на мой игровой объект в компоненте Mesh Renderer.

изменение материала.png

  • Так выглядела грубая построенная идея

руб-версия-1.png

Добавление физики шарнирного соединения

  • Первое, что понадобилось физике, — это шары.
  • Я добавил Rigidbody к каждому мячу и оставил настройки по умолчанию.

шар-жесткое-тело.png

  • Я поднял мяч в воздух и нажал кнопку воспроизведения, чтобы проверить, работает ли физика мячей.
  • Затем я выбрал, на каком игровом объекте я хотел бы иметь компонент шарнирного соединения, который был самым длинным уровнем в этой сцене.
  • Я добавил компонент
    • Выбрал объект
    • нажал добавить компонент
    • Тип шарнирного соединения
    • Выбрал его.

шарнирное соединение.png

  • Я снова проверил, какой будет эффект……. ничего такого……. ничего не происходило.
  • Поиграв некоторое время с настройками шарнирного соединения, я понял, что значение оси, по которой должен двигаться шарнир, было неправильным.
  • Установка для оси Z значения 1, а для X и Y значения 0 создала эффект качелей, к которому я стремился.
  • Все остальные настройки я оставил по умолчанию.

шарнир-совместные-settings.png

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

У меня есть ощущение, что это связано с тем, что вес моих игровых объектов (уровня) не распределяется одинаково, как хорошо сбалансированные весы, но я не хотел тратить слишком много времени на устранение неполадок.

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

быстрое исправление.png

  • Наконец, мяч катится на самый низ и ударяется о костяшки домино, прежде чем упасть на землю.

окончательный результат-версия-1.png

Добавление компонента Hinge к «Hammer Wall»

  • Другой вариант, с которым я экспериментировал, заключался в том, чтобы удалить шарнирное соединение с самого длинного уровня и добавить его к желтой стене.
  • На приведенной ниже диаграмме вы увидите, что эта стена имеет «головку молота» вверху, а перед ней расположен еще один шар (компонент твердого тела).
  • Мяч 1 падает с неба,
  • Он скатывается на один уровень,
  • Сбегает на следующий уровень,
  • Ударяется о желтую стену,
  • Отталкивает стену
  • Толкает молот вперед
  • Сталкивание мяча 2 с верхнего уровня

Молот-стена.png

  • Мяч катится по всем уровням
  • Добирается до земли
  • Мяч 1 все еще катится, в то время как мяч 2 делает свое дело, и ударит по домино плоской стороной, как в примере 1.

Добавление соединения Spring в GameObject

  • Пока возился, я решил изменить способ опускания моего шара и хотел проверить пружинный шарнир.
  • Я создал коробку для мяча с кубиками

мяч-1.png
пружинный сустав.png

  • Я добавил компонент пружинного соединения к игровому объекту коробки.
  • К этому игровому объекту добавлен компонент твердого тела.
  • Я оставил все настройки по умолчанию, кроме замораживания вращения:
    • В настройках компонента твердого тела
    • Ограничения
    • Отметьте все 3 поля для оси XYZ рядом с вращением

замораживание-вращение.png

  • Теперь он подпрыгивает, как пружина
  • Я повернул всю коробку немного вперед, чтобы мяч отскакивал при старте на платформу.
  • Чем выше вы поместите свой мяч, тем большую силу он приложит к коробке, и, следовательно, эффект пружины будет больше и будет выше или выше.

весна-эффект.png

Возникшие проблемы

  • Не работает физический компонент

    • Проверьте, на какой оси вы отмечаете как 1
    • Убедитесь, что объект, к которому присоединен физический компонент, не находится в прямом контакте с другим телом (что-то с границей сетки). Это приведет к тому, что ваш объект, к которому прикреплен физический компонент, будет вести себя очень странно, например, мой неконтролируемо трясется.
  • С того момента, как сцена началась, физика начала имитировать, а не только имитировать при прикосновении.

    • снимите флажок гравитации на твердотельном компоненте. Это заставит объект реагировать только тогда, когда с ним взаимодействуют.
  • Игровой объект с шарниром Spring подпрыгивал повсюду

    • Заморозить вращение по осям XY и Z.
    • Эффект отскока будет больше похож на пружину, а не на эластичный шнур.
  • Мяч скатывается с краев уровней

    • У меня не было краев на моих уровнях. Я добавил несколько ребер, чтобы мяч не сбивался с пути, если он отклонится от платформы.

Завершение

Во время написания этого блога я продолжал настраивать вещи здесь и там, поскольку, похоже, мне нравится эта задача гораздо больше, чем я ожидал. Я добавил еще несколько ящиков, пружин и выступов, сгладил некоторые эффекты и добавил больше костяшек домино.

Вот мой окончательный результат, который я не перестану улучшать, так как у меня большие планы на то, что начиналось как небольшой проект.

Снимок экрана 16 июля 2019 г., 13:31:23.png

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *