05.05.2020 admin

Геймдев за 7 дней.3 День

Всех с этим одновременно чудесным и трагичным праздником!
Продолжаем курс Геймдева, пошёл 3 день.

Управление

Сегодня мы создадим управление персонажем и начнем писать скрипты на C#.

Добавление контроля к изображению

В настоящее время в игре нет ничего, с чем мы могли бы взаимодействовать. В нашем распоряжении есть изображение и анимация, которую мы можем видеть. Если мы хотим, чтобы что-то произошло, когда мы, например, нажимаем на экран телефона, то должны создать что-то вроде виртуальной кнопки, которая регистрирует это касание.

Давайте добавим эту кнопку!

Перейдите в меню GameObject, затем выберите UI (для пользовательского интерфейса) и Button.

Как вы можете видеть на вкладке Hierarchy, это добавит объект Canvas и объект Button к изображению. Это замечательно! Нам нужны они оба.

Canvas (Холст) — это область, внутри которой мы можем добавлять объекты пользовательского интерфейса.

Button (Кнопка) — это элемент управления пользовательского интерфейса, который можно нажать и отпустить.

С UI-объектами работать немного сложнее, потому что способ их отображения в редакторе намного крупнее, чем в игре. Вы, вероятно, обратили внимание, что на экране не видно добавленной кнопки.

Сделайте двойной щелчок по элементам на вкладке Hierarchy, таким образом вы сможете переместить на вкладке Image (Изображение) фокус на эти объекты. Затем дважды щелкните объект Canvas (Холст) на вкладке Hierarchy.

Теперь вы можете увидеть кнопку и область Canvas на вкладке Scene. Представьте, что белый прямоугольник — это границы экрана вашего устройства. Если вы захотите вернуться к предыдущему виду, дважды щелкните объект «Main camera» («Основная камера») на вкладке «Hierarchy» (Иерархия).

Моя кнопка расположена далеко от области холста. А мне необходимо, чтобы она накрыла весь экран. Это позволит игроку управлять героем прикосновением к любой части экрана.

Чтобы решить эту задачу, я выбираю в «Hierarchy» «Button», т.е. нашу кнопку. Теперь я могу изменить её размер и положение в «Инспекторе» («Inspector»).

Прежде всего, изменим Anchor Presets. Для этого кликнем по квадрату «середина/центр» и выберем опцию в правом нижнем углу, которая растянет кнопку как по горизонтали, так и по вертикали.

Если мы теперь установим все левые, правые, верхние и нижние преобразования в 0, кнопка заполнит весь холст. С первой частью задачи мы справились!

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

Перейдем на вкладку «Инспектор» и найдем параметр «Цвет» в компоненте «Изображение (сценарий)». При нажатии нам откроется окно выбора. В нём вы увидите четыре значения — R, G, B (красного, зеленого, синего) и A (для альфы). Если повернуть A до нуля, изображение кнопки станет невидимым.

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

Теперь заходим на вкладку Иерархия и нажимаем на маленькую стрелку рядом с объектом Button. В результате этого действия мы увидим под кнопкой текстовый объект.

Удаляем его со спокойной совестью. Нам же не нужно, чтобы под нашей кнопкой появлялись странные тексты?

Приложение для изображений

Для работы с изображениями необходимо установить редактор кода. Идеальный вариант — Visual Studio, потому что он официально поддерживается Unity. К счастью, версия Visual Studio бесплатна даже для небольших студий. Установочный пакет может показаться большим, но ровно столько весят его инструменты.

После того, как вы установили Visual Studio, мы можем начать добавлять в нашу игру необходимые функции.

Перейдите в меню «Ресурсы» и выберите «Создать» и «C # Script». (C # — это язык программирования, используемый для сценариев в Unity.) Это создаст новый файл сценария на вкладке Project. Давайте назовем его JumpScript.

Язык программирования C #

Двойной щелчок по JumpScript откроет Visual Studio и покажет вам код внутри файла. Он должен быть похож на тот, который я показал ниже…

System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class JumpScript : MonoBehaviour {

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

}

}

Ключевые Слова, выделенные цветом (в данном случае, синим), называются ключевыми словами. Они формируют правила, вокруг которых вращается программирование.

Использование ключевого слова позволяет скрипту получить доступ к содержимому в других библиотеках. Например, UnityEngine — это библиотека, которая содержит функциональные возможности, к которым мы теперь можем получить доступ, чтобы использовать движок.

Ключевые слова public class определяют класс, который в данном случае называется JumpScript. Изучение классов немного выходят за рамки этого руководства. Остановимся на том, что система воспринимает класс как контейнер, похожий на объект Холст. Внутри фигурных скобок класса вы можете написать код. Все, что находится внутри этого блока, принадлежит этому классу. Также при помощи имени класса вы сможете получить доступ к коду.

Внутри блока класса у нас есть два других блока — Start и Update . Они созданы Unity, потому что они часто используются вместе с файлами сценариев. Тем не менее, они не являются обязательными. Мы не будем использовать их прямо сейчас.

Вместо этого создадим внутри класса новый блок. Заодно запомним, что внутриклассовые блоки принято называть методами. Сейчас мы создадим новый метод и назовем его JumpClick. Но прежде, чем перейти к действию, напомню об одном моменте.

Важно тестировать каждое изменение сразу после того, как вы его сделали. Вы должны проверить, что всё работает именно так, как вы задумали. Если же продолжать добавлять новые элементы без проверки функционирования каждого из них, однажды вы рискуете обнаружить, что ваша игра сломана, но вы не знаете, в какой момент это произошло. Найти причину проблемы в таком случае будет очень непросто.

Вернемся к работе. Итак, внутри метода JumpClick я хочу напечатать текст. Если текст будет воспроизведён успешно, я пойму, что механизм щелчка работает правильно. Текст будет выведен на консоль с использованием функционала Debug.Log.

public voidJumpClick

Debug.Log(«Jump

}

Изображение готово. Но как кнопка узнает, чтобы ей необходимо вызвать этот скрипт? Давайте подключим это.

Выбираем круг, который обозначает нашего игрока. Найти его в системе станет проще, если мы дадим ему правильное название. Для этого в самом верху вкладки «Инспектор» изменим имя объекта на PlayerCircle.

Теперь добавим только что созданный скрипт в качестве компонента для PlayerCircle. Нажимаем в нижней части вкладки «Инспектор» кнопку «Добавить компонент» и вводим переход. Unity должна предложить вам Jump Script как самый первый результат. Нажмите на него.

Теперь скрипт подключен к плееру. Но нам все еще нужно подключить его к кнопке. Для этого выбираем кнопку на вкладке Иерархия. Теперь, если вы посмотрите на вкладку Inspector, вы должны увидеть компонент Button (Script). В нижней части этого компонента есть раздел для событий. Кнопка имеет только одно событие: «При нажатии ()». Это и есть тот элемент, который нам предстоит настроить.

Мы хотим, чтобы событие On Click выполняло метод JumpClick, который находится внутри JumpScript для объекта PlayerCircle. Запомним это.

Сначала передадим объект PlayerCircle событию. Найдите поле с надписью None (объект) и рядом с ним нажмите кнопку с кружочком. У вас откроется окно выбора объекта. Внутри этого окна есть вкладка Изображение, в которой перечислены все объекты, уже находящиеся внутри. Выберите на ней круг игрока.

Теперь мы можем вернуться к событию и передать ему метод, связанный с PlayerCircle. Нажмите раскрывающееся меню с надписью No Function, затем JumpScript и, наконец, JumpClick (). Теперь метод подключен к событию On Click нашей кнопки.

Возможно, вы помните, что я упоминал, что Debug.Log будет печатать текст внутри консоли. Но где консоль? По умолчанию она находится рядом с вкладкой «Проект» в нижней части экрана. Откройте её.

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

Поздравляем! К окончанию третьего дня вы проделали немало работы!

Мы подобрались к особенно интересной территории. До завтра!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Contact

Давайте работать вместе!

Пишите нам и найдем точки соприкосновения, может станем партнерами, а может поможем вам зайти в нашу чудесную нишу

Вы разработчик?

Пишите! Нам постоянно нужны новые кадры, либо можем помочь в продвижении вашего приложения

Новичок?

Поможем быстро войти в нишу, не тратя годы на понимание

Давно в нише?

Рады будем пообщаться как на темы whitehat, так и blackhat тематики ^_^ + всегда есть что обсудить по поводу рекламных сетей

ПИШИ В TELEGRAM!

Contact