вторник, 30 мая 2017 г.

Unity3D, 2D платформер, персонаж прилипает к стене после прыжка.

     Если следовать логике физической модели Unity3D, когда на объект действует горизонтальная сила(в принципе она может быть в любом направление) и этот объект упирается в неподвижную стену, то этот объект прилипнет к этой стене(к примеру если ладонью придавить к стене кирпич). Но такая модель не должна действовать на некоторые объекты, например персонаж после прыжка упирается в вертикальную стену и прилипает к ней, пока не будет отжата кнопка движения. Для этого есть готовое решение в движке.

     Чтобы персонаж после прыжка не прилипал к стене, к Box collider стены(платформы) нужно добавить материал physics material 2D с параметрами Friction 0 и Bounciness 0. Ниже под катом пару скриншотов с более подробной инструкцией, как это сделать.



     Создаем объект physics material 2D(Лучше создать для него отдельную папку в проекте)
Жмем правой кнопкой на папку, в которой будем хранить этот объект, затем выбираем:
Create -> physics material 2D


     Выбираем в ветке проекта созданный объект physics material 2D. Затем в окне инспектора этого объекта ставим следующие параметры: Friction = 0 и Bounciness = 0.

     Теперь выбираем стену(платформу) и в инспекторе в параметрах Box collider 2D в строке Material указываем наш созданный выше объект.

     Вот и все, теперь персонаж, при встрече со стеной и нажатой кнопкой движения в ее сторону, будет сползать вниз. Надеюсь кому-нибудь пригодится.

13 комментариев:

  1. Спасибо работает.
    Это работает и в 3D

    ОтветитьУдалить
  2. А что делать если при прикосновении к стене я могу множество раз прыгать вверх?

    ОтветитьУдалить
    Ответы
    1. Добавь проверку что ты стоишь на земле)

      Удалить
    2. как добавить проверку земли? не могу нигде найти..
      GraundCheck?

      Удалить
    3. Если ты еще тут, зайди на CodeMonkey в ютубе там есть видео на эту тему

      Удалить
  3. Боже, это самое быстрое решение проблемы в моей жизни, огромное спасибо автору

    ОтветитьУдалить
  4. Это решение только проблемы прилипания, но вызывает другую проблему - на некоторых поверхностях персонажи будут скользить как по льду. Я рекомендую добавить персонажу едж коллайдер 2д по бокам и уже коллайдеру назначить физический материал с силой трения 0. Такое решение избавит вас от скользящей поверхности.

    ОтветитьУдалить
  5. Я Артур Борис, житель / гражданин Российской Республики. Мне 52 года, я предприниматель / бизнесмен. Однажды у меня были трудности с финансированием моего проекта / бизнеса, если бы не мой хороший друг, который познакомил меня с г-ном Бенджамином Ли, чтобы получить ссуду в размере 250 000 долларов США от его компании. Когда я связался с ними, мне потребовалось всего пять рабочих дней, чтобы оформить ссуду и перевести ее на мой счет. Даже с плохой кредитной историей они все равно предлагают вам свои услуги. Они также предлагают все виды ссуд, такие как бизнес-ссуды, жилищные ссуды, личные ссуды, автокредиты. Я не знаю, как благодарить их за то, что они сделали для меня, но Бог вознаградит их согласно Своему богатству славы. Если вам нужна срочная финансовая помощь, свяжитесь с ними сегодня по электронной почте 247officedept@gmail.com Информация WhatsApp ... + 1-989-394-3740

    ОтветитьУдалить
  6. Спасибо! Мне очень помогло!

    ОтветитьУдалить
  7. Материал надо добавить к стене и самому персонажу

    ОтветитьУдалить

Unity3D, 2D платформер, персонаж прилипает к стене после прыжка.

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