Статьи

Построение клона Dodger Game в Unity

В этом уроке мы будем создавать простую игру Dodger в Unity. Чтобы увидеть и воспроизвести окончательный результат, перейдите сюда .

Dodger clone screenshot

Анализируя игру

Dodger — это небольшая, упрощенная игра, в которой не нужно много логики для программирования, и ее можно настраивать практически бесконечно. У Доджера есть только несколько ключевых элементов геймплея:

  1. Вход игрока
  2. Границы игрока / врага
  3. Генерация случайного местоположения
  4. коллизия
  5. Потерять условие

Используя эти пять элементов, мы создадим простой клон Dodger. В этом руководстве предполагается, что вы установили Unity.

Добавление активов

Создайте новый проект Unity2D и назовите его «Dodger» или «DodgerExample».

Project start screen

Сначала вы захотите загрузить изображения со страницы GitHub (или щелкните правой кнопкой мыши и сохраните изображение как…).

Player and enemy spritesenter image description here

Для создания папок в Unity вам нужно щелкнуть правой кнопкой мыши внутри панели Assets и выбрать Create -> Folder. Назовите вашу новую папку « ImagesPrefabsScripts

Creating a folder in Unity

После создания ваших папок вы сможете перетаскивать загруженные изображения со страницы Github в папку Images. Выберите оба изображения в папке «Изображения», установите значение «Пиксели на единицу» равным 32 и нажмите «Применить».

Создание игрока

Чтобы добавить вход игрока, мы сначала должны создать игровой объект Player. Вы можете создать игровой объект Player, перетащив изображение зеленого улыбающегося лица в панель иерархии. Установите имя игрового объекта Player и установите его Y Position в -3,5.

Creating a player

Модификация нашей камеры

Если бы мы покинули камеру таким образом, наши спрайты должны были бы использовать десятичные числа, чтобы оставаться внутри экрана, как мы хотим. Unity позволяет нам изменять размер основной камеры и цвет ее фона. Выберите камеру и нажмите цвет фона. Установите цвет на красивый оттенок синего (R: 0 G: 223 B: 255).

Setting colors for the background

Выберите значение размера основной камеры и установите для него значение 4.4. Наконец, внутри игровой панели нажмите Free Aspect и установите соотношение сторон 4: 3.

Changing the aspect ratio

Получение информации от игрока

Мы начнем наше программирование с получения информации от игрока. Чтобы получить информацию от игрока, нам нужно создать новый скрипт C # и назвать его «Player Controller».

Creating a new C# script

Дважды щелкните скрипт, чтобы открыть его в IDE. Когда IDE будет открыта, добавьте этот код в скрипт:

     //Speed of the Player
    public float speed = 10.0F;

    //bounds of player
    public float leftBound = -5F;
    public float rightBound = 5F;
    public float upBound = 3.5F;
    public float downBound = -3.5F;
    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        //Horizontal Speed
        float movementSpeedX = Time.deltaTime * Input.GetAxis("Horizontal") * speed;        
        //Vertical Speed
        float movementSpeedY = Time.deltaTime * Input.GetAxis("Vertical") * speed;          
        //Player Movement
        transform.Translate(movementSpeedX, movementSpeedY, 0);                         

        //creates bounds around player
        if(transform.position.x > rightBound){
            transform.position = new Vector3(rightBound,transform.position.y,0);
        } else if(transform.position.x < leftBound){
            transform.position = new Vector3(leftBound,transform.position.y,0);
        }

        if(transform.position.y > upBound){
            transform.position = new Vector3(transform.position.x,upBound,0);
        } else if(transform.position.y < downBound){
            transform.position = new Vector3(transform.position.x,downBound,0);
        }
    }

Примечание: фактические значения границ могут отличаться. Если это так, добавьте соответствующее значение к связанным переменным

Добавьте скрипт Player Controller к игровому объекту Player в иерархии, перетащив его из панели «Ресурсы» в игровой объект Player. Если вы запустите игру и попытаетесь управлять игроком с помощью клавиш со стрелками, вы увидите, что игрок перемещается на экране.

Fine tuning the player object

Враг

Далее нам нужно будет создать врага. Чтобы создать врага, вам нужно перетащить злой зеленый блок на панель иерархии. Идите вперед и назовите игровой объект Враг. Нажмите под названием игрового объекта, где написано Untagged, затем нажмите «Добавить тег». Создайте тег «Враг» и присвойте объекту игры «Враг» этот тег. Выберите игровой объект Player и присвойте ему тег «Player».

The enemy is untagged

Tagging the enemy

Теперь, когда у нас есть набор тегов, которые будут показывать разницу между игроком и врагом, мы можем начать кодировать поведение врага. Откройте папку «Сценарии» на панели «Ресурсы» и создайте новый сценарий C # с именем «EnemyController». Добавьте сценарий EnemyController к игровому объекту Enemy. Откройте скрипт в вашей IDE и введите его в ваш скрипт:

     //speed of Enemy
    public float speed = 8F;    

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        //Movement of Enemy
        transform.Translate(0, -speed * Time.deltaTime, 0);         
    }

Добавление столкновения

Внутри Unity выберите игровой объект Player. На панели «Инспектор» игрового объекта «Игрок» нажмите кнопку «Добавить компонент», найдите «Circle Collider 2D» и добавьте его в игровой объект «Игрок». Повторите то же самое, за исключением поиска «Rigidbody 2D» и добавьте его в игровой объект Player. На Rigidbody 2D установите значения такие же, как на изображении ниже.

Adding a colliderenter image description here

Затем выберите игровой объект «Враг», и на его панели «Инспектор» нажмите кнопку «Добавить компонент». Найдите «Box Collider 2D» и добавьте его в игровой объект Enemy. Отметьте «Триггер» внутри меню для игрового объекта Enemy Box Collider 2D.

Откройте скрипт EnemyController внутри вашей IDE и под типом метода Update:

 void OnTriggerEnter2D(Collider2D other){

        //Checks if other gameobject has a Tag of Player
        if(other.gameObject.tag == "Player"){
            //Pauses gameplay
            Time.timeScale = 0;         
        }
}

Случайно порождая врага

Внутри Unity перетащите игровой объект Enemy в папку Prefabs внутри панели Assets. Удалите врага, который находится внутри иерархии, так как мы будем случайным образом генерировать местоположение всех появившихся врагов. Щелкните правой кнопкой мыши внутри панели иерархии и выберите «Создать пустой». Назовите пустой игровой объект «EnemySpawner» и установите его позицию Y на 6. Внутри папки скриптов создайте новый скрипт C # с именем «EnemySpawnerController» и откройте его внутри вашей IDE.

Внутри вашего типа сценария EnemySpawnerController:

     //rate at which enemies spawn
    public float spawnRate = 1;     

    //enemy prefab
    public GameObject enemy;    

    //bounds of spawner
    public float leftBound = -5F;
    public float rightBound = 5F;


    // Use this for initialization
    void Start () {
        //call SpawnEnemy based on spawnRate
        InvokeRepeating("SpawnEnemy", 1, spawnRate);        
    }

    // Update is called once per frame
    void Update () {

    }

    void SpawnEnemy(){
        //a clone of the enemy prefab
        GameObject enemyClone;  

        //spawns enemyClone at this location and rotation   
        enemyClone = Instantiate(enemy, this.transform.position, this.transform.rotation) as GameObject;        

        //randomly moves spawner along x axis
        float x = Random.Range(leftBound, rightBound);
        transform.position = new Vector3(x,this.transform.position.y, 0);
    }

Внутри Unity перетащите префаб Enemy (из папки Prefabs) на значение Enemy в меню Enemy Spawner Controller внутри панели EnemySpawner Inspector. Выберите EnemySpawner на панели Иерархии и нажмите COMMAND + D (или щелкните правой кнопкой мыши игровой объект и выберите дубликат), чтобы дублировать игровой объект. Назовите новый игровой объект EnemySpawner «EnemySpawner 2» и установите его позицию X на 2. Выберите игровой объект EnemySpawner на панели иерархии и установите его позицию X на 2.

Добавление базового интерфейса

Внутри панели иерархии щелкните правой кнопкой мыши и выберите «Создать пустой». Установите имя нового игрового объекта на «UIManager». В вашей папке скриптов создайте новый скрипт C # и назовите его «UIManager». Откройте скрипт в вашей IDE и введите:

 // Use this for initialization
void Start () {
    Time.timeScale = 1;
}

//Reloads the Level
public void Reload(){
        Application.LoadLevel(Application.loadedLevel);
}

Внутри Unity в верхнем меню выберите GameObject -> UI -> Button. Назовите новую кнопку «Обновить» и установите ее позицию X на 202, а позицию Y на 196. Нажмите на стрелку вниз рядом с кнопкой «Обновить» на панели иерархии и выберите текстовый игровой объект. Установите текстовое значение игровых объектов на «Обновить». Выберите кнопку «Обновить» на панели иерархии и в ее меню «Меню» щелкните значок «плюс» в конце меню «При нажатии» (). Установите игровой объект метода On Click для игрового объекта UIManager и установите метод UIManager -> Перезагрузить.

Adding the refresh game button

Заканчивать

Создайте папку «Сцены» на панели «Ресурсы». Сохраните нашу текущую сцену как «MainLevel» и поместите ее в папку сцен. В верхнем меню выберите «Файл» -> «Настройки сборки» и перетащите сцену MainLevel с панели «Ресурсы» в меню «Настройки сборки» или нажмите «Добавить текущий» в меню. Наконец, создайте игру на ПК, Mac или в Интернете и получайте удовольствие от игры.

Вывод

В этом коротком, но конкретном учебном курсе были описаны точные шаги по созданию клона популярной игры Dodger в Unity. Надеюсь, вам понравилось и вы хотите больше контента для Unity — это скоро, мы обещаем! Обратная связь? Комментарии? Оставь их ниже!

Вы можете скачать полный проект на GitHub .