Изучите Joystick Pack (ссылка на ассет). С помощью данного ассета вы сможете легко пользоваться виртуальным (то есть на экране) джойстиком для управления в игре.
Документация находится внутри ассета, когда вы установите его. Она совсем не большая и по сути все сводится к выбору нужного префаба джойстика и обращению к его свойству DIrection.
Изучите работу со ScriptableObject в Unity. Это специальный класс, с помощью которого можно создавать ассеты кастомного типа и использовать их в игре. Наиболее часто ScriptableObject используется для создания конфигов игры, например конфиги уровней, врагов и так далее.
Создайте игру в которой будут несколько уровней. В каждом уровне генерируются волны врагов. Волны настраиваются в отдельном конфиге (ScriptableObject). Враги бывают двух типов: ближний бой (EnemyMelee) и дальний бой (EnemyRanged). Оба скрипта должны наследоваться от общего класса Enemy, который содержит общую для обоих логику и является абстрактным.
В игре мы управляем капсулой, которая стреляет в ближайшего врага. Наша задача убегать от волн врагов и продержаться до конца, пока не убьем всех.
EnemyMelee подходит к персонажу в упор и наносит урон.
EnemyRanged подходит к персонажу на определенную дистанцию и стреляет. Если патрон попадает в персонажа, то он получает урон.