Для успешного продолжения работы изначально надо научить игрока бегать и прыгать, собирать монетки. Стрелять научим позже, когда понадобиться.
Начнем...
Первым делом в Инспекторе ставим Игроку Tag "Player". Он есть по умолчанию, поэтому все просто. Order in Layer ставим 1.
Затем надо добавить компонент Rigidbody2D
Далее небольшая тренировка для понимания процесса...
Смотрим в экомпонент Rigidbody2D - строка Material пока пусто, надо заполнить!
В папке Project / Assets специально уже создана папка Materials. Заходим в нее и ПКМ / Greate / 2D / Physics Material 2D и даем название Player.
В Инспекторе видим всего две строки Friction - трение и Bounciness - упругость. Заменим стандартные значения: трение = 0, упругость = 0,2.
Это уже проверено... Игрок после приземления довольно смешно подпрыгивает и бьется лбом о каждое препятствие. Однако можно экспериментировать с материалом...
Этот материал тащим в Rigidbody2D Игрока. Остальные параметры пока не трогаем.
Все эти манипуляции нужны для понимания возможностей Юнити. В принципе можно вообще не заморачиваться и строку Material у Player оставить пустой.
Раскрываем закладку Constraints в строке Freeze Rotation ставим галочку по оси Z. Это действие заблокирует вращение игрока по указанной оси.
Далее Игроку нужен коллайдер.
Я думаю, что исходя из весьма пузатого моего героя, ему вполне себе подходит Capsule Collider 2D - добавляем и настраиваем размер коллайдера
Еще нужен компонент Animator, добавляем.
Для этого в Project / Assets создаем папку Animations. В ней ПКМ / Create / Animator Controller и присваиваем имя Player
В Инспекторе Игрока добавляем компонент Miscellaneous / Animator и в строку Controller переносим файл Player из Assets / Animation
Вот такая заморочка... и еще далеко не все!
Но об этом позже, когда дойдем до анимации.
Скриптов, связанных с Игроком несколько, поэтому по заведенному обычаю в папке Scripts надо создать отдельную папку Players и уже там создавать скрипт MoovingPlayer (мало ли что будет тут двигаться?!)
Это скрипт не для Андроида!!! Дело в том, что для тестирования и отладки игры на компе пользоваться мышкой, жмакая на кнопки в разных углах экрана крайне неудобно.
Поэтому временно воспользуемся скриптом на клавиатуру, а когда уже все будет в норме, отключим его и поставим кнопки с нужными скриптами.
И последнее:
Все элементы, которые исполняют обязанности "земли", должны иметь слой Ground!!!
Самое простое - открыть префабы background, wellStat и PlatformGor и в строке Layer установить значение Ground
Для горизонтальной платформы, которая имеет нижний коллайдер Conflict присвоение значение Ground нужно только самой платформе!
Теперь все эти поверхности будут восприниматься в качестве земли и Игрок сможет прыгать исключительно, когда будет на земле - не стоит ему в этой игре парить как птичка!
Выделяем Игрока и заносим значения в поля скриптов, для пробы пока так:
Скорость движения = 3
Сила прыжка = 6
Длина луча = 0,6
Для начала пойдет. Дальнейшие регулировки можно провести после основного строительства препятствий.
Запускаем игру и проверяем движения Игрока.
Прыгает и не летает... Бегает (пока только скользит, это поправим позже), в целом все ровно!
Часть 1 "Концепция игры" https://dzen.ru/a/ZGJVMZKsTRJ1IRxW
Часть 2.1 "Поиск и размещение" https://dzen.ru/a/ZGNW53IB3hJhklbs
Часть 2.2 "Настройка игровых элементов" Игрок, Задний фон, Кирпичики, Поле Канваса, Земля, Фон Канваса, Границы игрового поля https://dzen.ru/a/ZGTlEXyZok4KNcEk
Далее Часть 3.2 "Игрок, Собиратель монеток" https://dzen.ru/a/ZJrfjBv0yCUeuzCB