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

Звук для лазера

Откройте папку Prefabs в окне Project и выберите префаб лазера.

В окне Inspector добавьте компонент «Audio Source», нажав «Add Component» и выбрав Audio ⇒ Audio Source. Затем откройте папку Audio в окне Project и перетащите звук laser_zap в поле Audio Clip. Не забудьте снять флажок Play On Awake.

Теперь откройте скрипт MouseController и добавьте следующий код в начало метода HitByLaser:

if (!isDead)

{

    AudioSource laserZap = laserCollider.gameObject.GetComponent<AudioSource>();

    laserZap.Play();

}

Звук сбора монет

Откройте скрипт MouseController и добавьте следующую переменную:

public AudioClip coinCollectSound;

Найдите метод CollectCoin и добавьте следующую строку кода в конце метода:

AudioSource.PlayClipAtPoint(coinCollectSound, transform.position);

Вернитесь в Unity и выберите мышью GameObject в меню Hierarchy. Перетащите звук coin_collect из окна Project в поле Coin Collect Sound в скрипте MouseController.

Звуки шагов и реактивного ранца

Мышь должна иметь два компонента Audio Source одновременно.

Добавление Audio Sources

Выберите GameObject в меню Hierarchy и добавьте два новых компонента Audio Source. Перетащите звук footsteps шаги окна Project в поле Audio Clip первого компонента Audio Source. Затем перетащите jetpack_sound в поле Audio Clip второго компонента Audio Source.

Включите Play On Awake и Loop для обоих аудиоисточников.

Если вы сейчас запустите сцену, то вы услышите оба звука беспрерывно звучащие в одно и тоже время, не зависимо от действий персонажа.

  1. Переключение между звуком шагов и реактивного ранца

Откройте скрипт MouseController и добавьте две новые переменные:

public AudioSource jetpackAudio;

public AudioSource footstepsAudio;

Теперь добавьте метод AdjustFootstepsAndJetpackSound:

void AdjustFootstepsAndJetpackSound(bool jetpackActive)

{

    footstepsAudio.enabled = !isDead && isGrounded;

    jetpackAudio.enabled = !isDead && !isGrounded;

    if (jetpackActive)

    {

        jetpackAudio.volume = 1.0f;

    }

    else

    {

        jetpackAudio.volume = 0.5f;

    }

}

Наконец, добавьте вызов AdjustFootstepsAndJetpackSound в конце метода FixedUpdate:

AdjustFootstepsAndJetpackSound(jetpackActive);

Задание переменных сценария «Шаг» и «полет»

Вернитесь в Unity и выберите GameObject в меню Hierachy. Теперь перетащите верхний компонент Audio Source в Footsteps Audio в скрипте Mouse Controller.

После этого перетащите второй компонент Audio Source в Jetpack Audio в компоненте скрипта Mouse Controller.

Добавление музыки

Чтобы добавить музыку, выполните следующие шаги:

  1. Выберите Main Camera в меню Hierachy.

  2. Добавьте компонент Audio Source в окне Inspector.

  3. Перетащите звук музыки из окна Project в свойство Audio Clip.

  4. Убедитесь, что Play On Awake и Loop включены.

  5. Наконец, уменьшите громкость до 0,3, чтобы музыка не была слишком громкой по сравнению с другими звуками.

  1. Игра в стиле JETPACK JOYRIDE в Unity 2D. Создание параллаксного фона в игре. Создание другой камеры. Создание перемещающейся текстуры. Остановка параллакс прокрутки после смерти мыши.

Добавление параллакс эффект для фона

Создаём вид из окна, добавляя фон с эффектом паралакса.

Подготовка фоновых изображений

Чтобы использовать фоновые изображения, вам необходимо настроить способ их импорта в Unity.

Откройте папку Sprites в окне Project и выберите window_background. В окне Inspector измените Texture Type на Default вместо Sprite (2D и UI). После этого измените Wrap Mode на Repeat и нажмите Apply.

Сделайте то же самое для изображения window_foreground.

Создание еще другой камеры

Основная камера предназначена для следования за мышью через весь уровень. Новая камера будет отображать фон параллакса и останется неподвижной.

Создайте новую камеру, выбрав GameObject ⇒ Camera и выбрав ее в окне Hierarchy и внесите следующие изменения:

  1. Измените название на ParallaxCamera.

  2. Установите Position в (0, 10, 0).

  3. Установите Projection на Orthographic.

  4. Установите такой же размер, как у основной камеры = 3,2.

Поскольку у вас есть две камеры, у вас также есть два аудио слушателя на игровой сцене. Отключите параметр Audio Listener в ParallaxCamera:

Создание четырехугольников

Создайте два объекта Quad, выбрав GameObject ⇒ 3D Object ⇒ Quad. Назовите первый четырехугольник parallaxBackground а второй parallaxForeground. Перетащите оба квадрата в ParallaxCamera, чтобы добавить их как дочерние объекты камеры.

Выберите parallaxBackground и измените значение Position на (0, 0,7, 10), а Scale на (11,36, 4,92, 1).

Выберите parallaxForeground и установите Position в (0, 0,7, 9) и Scale в (11,36, 4,92, 1).

Установка текстуры для четырехугольников

Откройте папку Sprites в окне Project и перетащите window_background на parallaxBackground и window_foreground на parallaxForeground в меню Hierarchy.

Теперь вам нужно в меню Hierarchy выбрать parallaxForeground. Вы увидите, что был добавлен компонент Mesh Renderer. Нажмите на раскрывающееся меню Shader и выберите Unlit ⇒ Transparent.

Сделайте то же самое для parallaxBackground.

Создание текстуры

Теперь вы создадите имитацию движения фона за окном, изменяя смещение текстуры.

Создайте новый скрипт C# под названием ParallaxScroll и прикрепите его к ParallaxCamera.

Откройте скрипт ParallaxScroll и добавьте следующие переменные:

//1

public Renderer background;

public Renderer foreground;

//2

public float backgroundSpeed = 0.02f;

public float foregroundSpeed = 0.06f;

//3

public float offset = 0.0f;

Вот, что делают эти переменные:

  1. Переменные Renderer будут содержать ссылку на компонент Mesh Renderer каждого из четырехугольников, чтобы вы могли настроить их текстуры.

  2. BackgroundSpeed и foregroundSpeed определяют скорость движения для каждого фона.

  3. Смещение будет обеспечиваться положением игрока. Это позволит вам связать движение мыши с движением фона параллакса.

Добавьте следующий код в метод Update:

float backgroundOffset = offset * backgroundSpeed;

float foregroundOffset = offset * foregroundSpeed;

background.material.mainTextureOffset = new Vector2(backgroundOffset, 0);

foreground.material.mainTextureOffset = new Vector2(foregroundOffset, 0);

Этот код увеличивает смещение текстуры каждой из четырехугольников, тем самым перемещая их. Результирующая скорость отличается, так как скрипт использует коэффициенты backgroundSpeed и foregroundSpeed.

Вернитесь в Unity и выберите ParallaxCamera в меню Hierarchy. Перетащите квадратик parallaxBackground в поле «Background» скрипта ParallaxScroll и переместите parallaxForeground на передний план.

Теперь откройте скрипт MouseController и добавьте следующую переменную:

public ParallaxScroll parallax;

Затем добавьте следующий код в конец метода FixedUpdate:

parallax.offset = transform.position.x;

Вернитесь в Unity и выберите GameObject в меню Hierarchy. Убедитесь, что скрипт MouseController виден в окне Inspector.

Перетащите ParallaxCamera из меню Hierarchy в поле Parallax в окне Inspector.

Это позволит сценарию MouseController изменить переменную смещения сценария ParallaxScroll относительно положения персонажа.

Установка порядка камер

Выберите ParallaxCamera в меню Hierarchy. В окне Inspector найдите компонент «Camera» и найдя поле «Depth», установите его значение = -2.

Глубина ParallaxCamera должна быть ниже, чем глубина основной камеры.

Выберите Main Camera в меню Hierarchy и установите для Clear Flags значение Depth Only.

Запустите сцену – теперь в окне должно быть видно фон параллакса.

Остановка параллакс прокрутки после смерти мыши.

Откройте скрипт ParallaxScroll в MonoDevelop и добавьте публичную переменную offset.

public float offset = 0;

Вы будете использовать ее вместо Time.timeSinceLevelLoad, so in Update replace the code where you calculate offsets with this:

float backgroundOffset = offset * backgroundSpeed;

float foregroundOffset = offset * foregroundSpeed;

Теперь откройте скрипт MouseController и добавьте следующую публичную переменную:

public ParallaxScroll parallax;

Затем добавьте следующий код в конец FixedUpdate:

parallax.offset = transform.position.x;

Таким образом, вы будете использовать позицию мыши в качестве смещения вместо времени.

Переключитесь обратно в Unity и выберите игровой объект mouse в Иерархии. Убедиться, что скрипт MouseController виден в Инспекторе.

Перетащите ParallaxCamera из Иерархии в поле Parallax в Инспекторе.

Это позволит скрипту MouseController изменять переменную offset, которая находится в скрипте ParallaxScroll.

103