Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы к экзамену.docx
Скачиваний:
29
Добавлен:
21.06.2022
Размер:
16.83 Mб
Скачать

Добавление метода для добавления нового объекта

Новые объекты добавляются в методе AddObject аналогично тому, как добавляются комнаты. Добавьте следующие данные в GeneratorScript:

void AddObject(float lastObjectX)

{

    //1

    int randomIndex = Random.Range(0, availableObjects.Length);

    //2

    GameObject obj = (GameObject)Instantiate(availableObjects[randomIndex]);

    //3

    float objectPositionX = lastObjectX + Random.Range(objectsMinDistance, objectsMaxDistance);

    float randomY = Random.Range(objectsMinY, objectsMaxY);

    obj.transform.position = new Vector3(objectPositionX,randomY,0);

    //4

    float rotation = Random.Range(objectsMinRotation, objectsMaxRotation);

    obj.transform.rotation = Quaternion.Euler(Vector3.forward * rotation);

    //5

    objects.Add(obj);           

}

Благодаря этому методу берется позиция последнего (самого правого) объекта и создается новый объект в случайной позиции в пределах заданного интервала.

Генерация и удаление объектов

Добавьте следующие данные в GeneratorScript:

void GenerateObjectsIfRequired()

{

    //1

    float playerX = transform.position.x;

    float removeObjectsX = playerX - screenWidthInPoints;

    float addObjectX = playerX + screenWidthInPoints;

    float farthestObjectX = 0;

    //2

    List<GameObject> objectsToRemove = new List<GameObject>();

    foreach (var obj in objects)

    {

        //3

        float objX = obj.transform.position.x;

        //4

        farthestObjectX = Mathf.Max(farthestObjectX, objX);

        //5

        if (objX < removeObjectsX)

        {          

            objectsToRemove.Add(obj);

        }

    }

    //6

    foreach (var obj in objectsToRemove)

    {

        objects.Remove(obj);

        Destroy(obj);

    }

    //7

    if (farthestObjectX < addObjectX)

    {

        AddObject(farthestObjectX);

    }

}

Чтобы этот метод работал, вам также нужно добавить команду GenerateObjectsIfRequired в пункт GeneratorCheck, который находится немного ниже GenerateRoomIfRequired:

GenerateObjectsIfRequired();

Настройка параметров скрипта

Чтобы заставить GeneratorScript работать, вам нужно установить несколько параметров для него. Вернитесь в Unity и выберите GameObject в окне Hierarchy.

Найдите компонент «Generator Script» в меню Inspector и убедитесь, что папка «Prefabs» открыта в окне Project.

Перетащите префаб coins_v из окна Project в список «Available Objects», который находится в компоненте GeneratorScript. Затем таким же образом перетащите префаб laser из окна Project в список «Available Objects».

35. Игра в стиле jetpack joyride в Unity 2d. Скрипт для добавления счётчика монет на экране. Скрипт для отображения кнопки на экране и возможности перезапуска игры.

Скрипт для добавления счётчика монет на экране

using UnityEngine.UI;// для использования возможностей новой графической системы Unity.

public Text cheeseLabel;// создаём новую переменную

void CollectCheese(Collider2D cheeseCollider)

{

cheese++;

cheeseLabel.text = cheese.ToString();//целое число монет преобразуется в строку и применяется к свойству text элемента Text.

}

Скрипт для отображения кнопки на экране и возможности перезапуска игры

using UnityEngine.SceneManagement;//простсранство имён

public void RestartGame()

{

SceneManager.LoadScene(“RocketMouse”);

}

public Button redtartButton;//новый метод и код в конце метода FixedUpdate, чтобы кнопка перезагрузки отображалась только после того, как игрок умирает

if(isDead && isGrounded)

{

ReatartButton.gameObject.SetActive(true);

}

И создаём кнопку, выбрав GameObject ⇒ UI ⇒ Button. В меню Inspector переименуйте новую кнопку в restartButton.

Текст в кнопке является дочерним элементом кнопки. В меню Hierarchy щелкните треугольник рядом с кнопкой restartButton и выберите элемент Text.(пишем необходимый текст).

Кнопка не должна отображаться в начале игры, поэтому еще раз выберите restartButton в меню Hierarchy и снимите флажок рядом с именем в окне Inspector.

Выберите мышь, чтобы отобразить сценарий «Mouse Controller» в окне Inspector, и перетащите кнопку restartButton из меню Hierarchy на кнопку «Restart Button» в Mouse Controller.

Последний шаг – сообщить кнопке, какой метод выполнять при нажатии. Выберите resetButton в меню Hierarchy и в компоненте Button в окне Inspector найдите On Click (). Нажмите кнопку + и перетащите GameObject из меню Hierarchy в поле None. Нажмите на кнопку No Function и выберите MouseController ⇒ RestartGame ().

  1. Игра в стиле JETPACK JOYRIDE в Unity 2D. Добавление звука в игру. Редактирование скриптов для озвучки действий персонажа. Фоновая музыка.