Game — Arkanoid на JS


арканоид на javascript

Господа, доброе утро) пишу арканоид на js. И все вроде бы неплохо. но есть затык с отбиванием от левой стороны блочков. в функции collapse не заходит в 4-й if. специально разделил условия на отдельные, чтобы разобраться, но, хоть глаз выколи, не вижу в чем проблема. нужна ваша помощь.
P.S. в коде еще не прописаны условия отбивания от углов блоков, но это я допилю). главная проблема на данном этапе описана выше))

10.04.2020, 10:06

Игра Арканоид на JavaScript
Добрый день, проблема с созданием игры арканоид. Все было-бы хорошо если бы не палка которая.

Арканоид. Отбивание шарика о ракетку
Здравствуйте. Помогите разобраться с ракеткой и шариком, чтобы ракетка отбивала шарик, и клир.

Арканоид
вообщем такое дело: все помнят арканоид где шариком нужно разбивать блоки, мне нужно сделать.

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

арканоид
нужно создать игру арканоид на стандартныхконтролах windows .

10.04.2020, 10:06

Арканоид
Всем привет! Пишу игру арканоид. Не могу корректно сделать физику игры. Для проверки соударения.

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

Арканоид
Собственно, арканоид с помощью graphics.h Запарился со структурами, шарик вырисовывает, а.

Форум

Справочник

Поиск по форуму
Расширенный поиск
К странице.

Совсем не гуру, но по мне — выглядит очень круто (тем более — за месяц). Это вхождение в профессию такое или уже давно на JS кодишь? В гитхабе всё учебное как я понял.

Из комментариев — дизайн вырвиглазный (можно сказать олдскульный) и тестов не увидел.

Не гуру . Посмотрел, вот советы и замечания:
1) Ускорение для ракетки не хватает при зажатии клавиши.
2) Внизу округленность лучше убрать и толщину уменьшить, так как не отталкивается от краев (наверно и от боковых поверхностей).
3) В коде выноси все константы в отдельные переменные.
4) Всегда нужно помнить о расширяемости и объектов и функционала (игровые колбэк события).
5) Один стиль для цветов в коде (rgba(0,0,0,0.3) и «black» — мне не понравилось).
6) Если разделяешь функционал по файлам, то их название полностью должно соответствовать содержанию.
7) Не нужно плодить повторяющиеся куски кода, делай приватные функции.
8) В методах лучше принимать объекты для описания стиля, чем: «color, width, height, . «. Учитывать отсутствие передаваемых свойств и вынести свойства по умолчанию в отельную структуру.
9) Игровое поле должно растягиваться под размер монитора.
10) Память освобождать от лишних объектов.

Привяжи accelerometer, можно будет детишкам давать играть.


Vanilla JS

вторник, 19 ноября 2013 г.

Arkano >

Напишем Arkanoid на JavaScript.

В нашем арканоиде угол отражения шарика зависит от того, на какую сторону ракетки он упал: при падении на левую треть мячик отлетает влево, при попадании на правую треть — вправо (в обоих случаях снаряд отражается под немного большим углом, чем при ударе о середину), при попадании в центр шарик отлетает под 45°, а его направление по оси икс не меняется.

Дается три жизни. Правда, при попадании шарика на нижнюю грань игра не ресетится, а шарик просто отскакивает и отнимается одна жизнь.

С версткой все просто. Кирпичики представлены инлайн-блоками, ракетка и снаряд имеют position: absolute.

Область, где расположены кирпичи ограничена сверху и снизу, а значит проверять соударения есть смысл только тогда, когда снаряд находится в этой области. Высота и ширина кирпичей определена заранее. Поэтому, взяв координаты шарика, мы точно сможем определить номер кирпича, в который он попал. Если его координаты X и Y, а ширина и высота кирпичей width и height, то взяв целую часть от частного X / width и Y / height мы получим в точный номер столбца и строки col и row текущей цели. Зная это, мы можем вычислить номер этого элемента:
number = row * rowLength + col.
Хорошо что querySelectorAll возвращает элементы именно в том порядке, в котором они расположены в html. Поэтому мы легко можем удалить текущий кирпич:
elements[number]. .

Не смотря на то, что нативный requestAnimationFrame уже реализован во всех десктопных браузерах, было решено отказаться от него в пользу setInterval.

body <
padding: 8px;
cursor: none !important;
>

#field <
width: 322px;
height: 270px;
padding-top: 30px;
border: 1px solid #ccc;
font-size: 0;
position: relative;
>

.brick,
.removed <
width: 28px;
height: 10px;
margin: 1px;
display: inline-block;
border: 1px solid;
>

.brick <
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #cdd), color-stop(100%, #777));
background: -webkit-linear-gradient(top, #cdd 0%, #777 100%);
background: linear-gradient(to bottom, #cdd 0%, #777 100%);
border-color: #777 #777 #000 #000;
border-radius: 3px;
>

.brick:nth-child(2n) <
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ccc), color-stop(100%, #777));
background: -webkit-linear-gradient(top, #ccc 0%, #777 100%);
background: linear-gradient(to bottom, #ccc 0%, #777 100%);
>

.brick:nth-child(5n) <
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ccc), color-stop(100%, #008));
background: -webkit-linear-gradient(top, #ccc 0%, #008 100%);
background: linear-gradient(to bottom, #ccc 0%, #008 100%);
>

.brick:nth-child(3n) <
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ccc), color-stop(100%, #080));
background: -webkit-linear-gradient(top, #ccc 0%, #080 100%);
background: linear-gradient(to bottom, #ccc 0%, #080 100%);
>

.brick:nth-child(7n) <
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ccc), color-stop(100%, #808));
background: -webkit-linear-gradient(top, #ccc 0%, #808 100%);
background: linear-gradient(to bottom, #ccc 0%, #808 100%);
>

.brick:nth-child(11n) <
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ccc), color-stop(100%, #880));
background: -webkit-linear-gradient(top, #ccc 0%, #880 100%);
background: linear-gradient(to bottom, #ccc 0%, #880 100%);
>

.removed <
border-color: transparent;
>


#paddle <
width: 62px;
height: 5px;
border: 1px solid #777;
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #cdd), color-stop(100%, #777));
background: -webkit-linear-gradient(top, #cdd 0%, #777 100%);
background: linear-gradient(to bottom, #cdd 0%, #777 100%);
position: absolute;
left: 128px;
top: 270px;
border-radius: 3px;
>

#ball <
width: 10px;
height: 10px;
border: 1px solid #955;
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fdd), color-stop(100%, #500));
background: -webkit-linear-gradient(top, #fdd 0%, #500 100%);
background: linear-gradient(to bottom, #fdd 0%, #500 100%);
border-radius: 50%;
position: absolute;
>

Цукерберг рекомендует:  PHP. Процедурный vs. Объектно-ориентированный стили

#lifesNode,
#scoreNode <
position: absolute;
right: -85px;
font: 14px arial, helvetica, sans-serif;
border: 1px solid #ccc;
border-radius: 4px;
padding: 1px 0;
width: 75px;
text-align: center;
>

#lifesNode:before <
content: ‘lifes: ‘;
>

#scoreNode:before <
content: ‘score: ‘;
>

Game — Arkanoid на JS

Для создания веб игр на языке JavaScript используется технология Canvas , которая позволяет выполнять JavaScript код в HTML5 документе. Вы можете более детально ознакомиться с этой технологией посмотрев видео ниже:

На html странице прописывается лишь тег канвас, а также подключение JS файла, в котором будет происходить обработка всей функциональности. К примеру, HTML файл может выглядеть следующим образом:

В JS файле необходимо найти нужный канвас по id и указать способ работы с ним.

Добавление изображений и аудио

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

Код добавления изображений и аудио в игру:

Рисование объектов

Чтобы нарисовать объекты, а также добавить функционал к игре необходимо прописать функцию, которая будет постоянно вызываться. Такую функцию вы можете назвать как вам будет угодно. Главное, вам нужно вызвать эту функцию из вне её хотя бы один раз, а внутри неё прописать метод requestAnimationFrame , который будет вызывать функцию постоянно.

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

Чтобы отследить нажатие игрока на какую-либо клавишу, необходимо использовать отслеживание событий — addEventListener . К примеру, чтобы отследить нажатие на любую клавишу на клавиатуре надо прописать следующий код:

Видео урок

Это были лишь небольшие азы перед созданием самой игры. Предлагаем вам ознакомиться с небольшим видео уроком, в ходе которого вы создадите небольшую 2D игру на чистом JavaScript’е.

Весь JS код игры

Ниже вы можете посмотреть на полностью весь код JavaScript файла, который был создан в ходе видео урока выше:


Крошечный арканоид на JavaScript (30 строк кода)

Наблюдая за тем, как люди в 30 строк джаваскрипта умещают excel и змейку, я решил не отставать от прогресса, и создать что-нибудь подобное.
Итак, дамы и господа — 30ти строчный арканоид на чистом JS.

Ссылка на fiddle.
Также продублирую на codepen, а то фиддл всю ночь 500кой отвечал.

В целом я старался добиться максимальной аутентичности:

  • угол отражения шарика зависит (немножко) от того, на какую сторону ракетки он упал: при падении на левую треть мячик отлетает влево, при попадании на правую треть — вправо (в обоих случаях снаряд отражается под немного бо́льшим углом, чем при ударе о середину), при попадании в центр шарик отлетает под 45° а его направление по оси икс не меняется.
  • Подсчет очков (а как же без этого).
  • Дается три жизни. Правда, при попадании шарика на нижнюю грань игра не ресетится, а шарик просто отскакивает и отнимается одна жизнь.

Из недостатков: шарик иногда неадекватно себя ведет и ломает слишком много кирпичей.

Под капотом

С версткой все просто. Кирпичики — инлайн-блоки, ракетка и снаряд — position: absolute.

А вот с collision detection чуть интереснее. Область, где расположены кирпичи ограничена сверху и снизу, а значит проверять соударения есть смысл только тогда, когда снаряд в этой области. Высота и ширина кирпичей определена. Поэтому, взяв координаты шарика, мы точно сможем определить номер кирпича, в который он попал. Если его координаты X и Y , а ширина и высота кирпичей width и height, то взяв целую часть от частного X / width и Y / height мы получим в точности номер столбца и строки col и row текущей цели. Зная это мы можем вычислить номер этого элемента:
number = row * rowLength + col .
Благо, querySelectorAll возвращает элементы именно в том порядке, в котором они расположены в html. И мы легко можем удалить текущий кирпич:
elements[number]. .

setInterval

Не смотря на то, что нативный requestAnimationFrame уже реализован во всех десктопных браузерах, было решено отказаться от него в пользу setInterval. Во-первых, это позволяет охватить также старые версии, а во-вторых это экономит одну (драгоценную!) строчку кода:

Итого

Код, на мой взгляд, получился довольно компактный. Самая длинная строчка — 88 символов (с учетом индентации). Сама игра немного кривенькая, ну, а чего ещё ожидать от 30ти строчек?)
Сейчас видимо, как кто-то заметил в комментариях к предыдущим постам, стоит ждать ‘Крошечную Windows’ в 30 строк.

Пишем арканоид на Unity. Настройка проекта

Мы начинаем цикл статей о написании простой игры на Unity — классического арканоида. Использовать будем только 2D инструменты, предоставляемые нам движком, который, ко всему прочему, совсем недавно стал бесплатным. В каждой из статей мы затронем один из аспектов написания игры, а в этой научимся создавать проект и добавлять ресурсы.

Вот список всех статей:

Введение

Целевая аудитория

Для кого рассчитан этот цикл статей? В первую очередь для двух групп людей:


  • Для тех, кто совсем не работал, но хотел бы познакомиться с Unity.
  • Для тех, кто работал с Unity, но не с 2D инструментами.

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

Сам движок Unity вы можете найти по этому адресу.

1 июля – 3 декабря, онлайн, беcплатно

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

Основные средства, введенные в набор 2D инструментов:

Примечание переводчика Актуально для Unity 4.3.

  • Новые типы ресурсов (спрайты, определенные 2D текстурой, прямоугольником и т.д.).
  • Новый компонент визуализации SpriteRenderer.
  • Новый вид отображения в 2D режиме.
  • Физический движок Box2D и набор компонентов для него.
  • Атласы (спрайтов).

Мы рассмотрим каждый из предложенных инструментов, кроме атласа спрайтов.

Превью результата

Взгляните на это демо-приложение. Именно такой результат у нас должен получиться в конце всех статей.

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

Запустите Unity и создайте новый проект, выбрав New Project… из меню File. Появится такое окно:

Определите местоположение проекта (это может быть любая удобная для вас папка), выберите 2D в поле Set up defaults for, а все галочки оставьте выключенными. Unity предлагает вам встроить в ваш проект шаблонные пакеты, они автоматически добавят определенные ресурсы, но нам это не понадобится.

Цукерберг рекомендует:  Создаём видеоплеер для нашего сайта

На этом все, нажмите на Create Project, откроется сам редактор. Выглядит он примерно так:

Это стандартный вид редактора. Unity поддерживает различные макеты для более удобного расположения вкладок консоли отладки, ресурсов, сцен, инспекторов и т.д. Если вы новичок в Unity, то мы советуем вам выбрать предложенный нами макет. Но если вы уже работали с Unity, настраивайте рабочее пространство так, как удобно вам.

В правом верхнем углу вы можете увидеть выпадающий список Layout. Кликните на него и выберите Tall. Редактор автоматически изменится и примет такой вид:

Основная причина смены стандартного макета — прямой и быстрый доступ ко всему тому, что нам может понадобиться: иерархии сцен, ресурсам проекта, инспектору и окну отладки. Как вы могли заметить, из всего вышеперечисленного в редакторе нет только консоли отладки. Добавим ее, нажав на Window -> Console.


Окно консоли появится, но будет не прикрепленным. Чтобы оно не плавало, закрепите его в доке, перетащив на вкладку Scene:

Отлично. Именно такой макет и будет для нас наиболее удобным. Для того, чтобы вы могли воспользоваться им и в других проектах, следует сохранить его.

Чтобы сохранить текущий макет, выберите Layout -> Save Layout. Далее от вас потребуется ввести название и нажать на кнопку Save.

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

Организация проекта и импорт ресурсов

Теперь, когда наш редактор готов к работе, пора разобраться с ресурсами. Основная организация проекта доступна на вкладке Project. Сейчас там почти пусто, за исключением папки Assets.

Хотя это и не является обязательным пунктом, мы настоятельно рекомендуем вам организовывать ваши ресурсы интуитивно понятным способом. Особенно если вы работаете с достаточно большим проектом. Для начала создайте папки со следующими именами (для создания папки требуется нажать правой кнопкой мыши на папку Assets и выбрать Create -> Folder):

Теперь пришло время перенести ресурсы в проект. Все, что вам понадобится, вы можете найти в папке tutorial_assets в GitHub репозитории наших уроков. Обратите внимание, что папка содержит ресурсы для всего цикла статей, поэтому некоторые спрайты/звуки мы пока использовать не будем.

Итак, откройте директорию со скачанными ресурсами и перетащите папку Sprites в одноименную папку в редакторе Unity. Аналогичным образом поступите и для папок Music и Sounds. После того, как закончите, вы должны увидеть нечто подобное:

Подготовка сцены

После того, как мы подготовили редактор к работе и импортировали ресурсы, пришло время к созданию первой сцены.

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

По умолчанию, когда вы создаете новый проект, Unity автоматически создает новую сцену с одним единственным объектом Main Camera — нашей основной камерой. Вы можете убедиться в этом, взглянув на вкладку Hierarchy:

Каждый объект в Unity имеет совокупность различных свойств. Кликнув на объект во вкладке Hierarchy, вы сможете изменить его свойства в соседней вкладке Inspector.

Давайте добавим первый наш объект — фоновое изображение нашей игры. На вкладке Hierarchy выберите Create -> Sprite. При создании спрайта, измените название объекта на Background (это же можно сделать и в окне Inspector, как говорилось выше).

Обратите внимание на поле Sprite компонента Sprite Renderer объекта Background — оно пусто. Это означает, что спрайт мы создали, но не связали его ни с одним ресурсом из нашего проекта. Чтобы исправить это, перетащите изображение background1.png на это поле. После этого на сцене отобразится наш фон.

Перейдя на вкладку Game, вы сможете увидеть сцену в таком виде, какой она будет в финальной версии игры. Здесь же можно изменить размер окна. У нас выбрано по умолчанию — Standalone (1024×768). Кстати, в демо-приложениях разрешение несколько меньше.

Как вы видите, наш фон окружен синим цветом. Давайте избавимся от этого. Для этого нам понадобится масштабировать спрайт, находящийся на сцене. Во вкладке Hierarchy выберите объект Background, а затем в окне Inspector измените параметр Scale по оси X и Y на 4. Кроме того, убедитесь, что Order in Layer выставлен на 0. Данный параметр говорит движку о том, какой объект должен находится дальше от нас, а какой ближе. Так как объект Background это фон и он должен быть максимально отдаленным от нас, мы задаем этому параметру 0.

Следующим шагом станет создание границ: мы добавим три спрайта (сверху, слева и справа). Процесс аналогичен добавлению фона. В качестве ресурсов используйте изображения bar1.png и bar2.png. Для того, чтобы настроить точное расположение барьеров, переключайтесь между вкладками Scene и Game. Не забудьте изменить Order in Layer на 1 для каждого спрайта.


После добавления границ, у вас должно получиться что-то подобное:

Созданные нами границы будут стационарными объектами, они все будут вести себя одинаково, а следовательно их можно объединить в группу. Для этого нужно создать пустой объект, нажав Game Object -> Create Empty. Во вкладке Hierarchy перетащите три спрайта на пустой объект, который мы только что создали. Переименуем объект на Bars для удобства.

Осталось добавить шарик, платформу игрока и блоки. Создадим по одному объекту каждого вида тем же способом, которым создавали фон и границы. Не забудем установить Order in Layer на 1.

Вот, что у вас должно получиться в итоге:

Наша статья подходит к концу. Давайте сохраним текущую сцену в качестве первого уровня. Выберите File -> Save Scene as…, задайте название Level1 и переместите файл в папку Levels.

В следующей части

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

[Arkano > 27:10 HD

30.03.2020 21:00 2020-03-30T18:00:57.000Z

Описание:

Производится перенос материалов со старых ресурсов на сайте http://godot-engine.ru

Там же в файловом архиве вы можете скачать некоторые исходники из ранних уроков.

Производится перенос материалов со старых ресурсов на сайте http://godot-engine.ru

Там же в файловом архиве вы можете скачать некоторые исходники из ранних уроков.

Более подробная информация на сайте http://onjs.ru
Часть проектов и исходники: https://github.com/SkanerSoft
http://nwjs.ru
NW.js IDE — лучшая среда разработки JavaScript Desktop приложений!

Цукерберг рекомендует:  #си# - Нет элемента Mouse в контексте

https://base-64.ru — онлайн инструменты разработчика. Работа с текстом, онлайн озвучка с разными голосами, кодировка и раскодировка текста и файлов в формате Base64.

https://base-64.ru — онлайн инструменты разработчика. Работа с текстом, онлайн озвучка с разными голосами, кодировка и раскодировка текста и файлов в формате Base64.
Друзья, копипаст должен быть адекватным! #ЗаЗдоровыйКод

Так же, теперь видео можно искать по тегам: #GodotEngine #GodotLessons и #SkaneLikerGodot

Программирование для детей

программирование для начинающих на языке JavaScript с применением HTML и CSS


26 мая 2015 г.

Игра Арканоид

Игра для самостоятельного разбора Арканоид. Скачайте архив по ссылке https://github.com/alexeizuzin/kids-arkanoid/archive/master.zip, разархивируйте и откройте в браузере файл index.html

Управление стрелочками и пробелом.

Поясню логику выбора направления шарика. Перед каждым передвижением шарика проверяется место перед шариком. Если оно свободно, шарик продолжает движение (1 вариант на картинке).

Если место перед шариком не свободно (2 вариант на картинке), надо определить в какую сторону должен отскочить шарик.

Проверяем, свободно ли место слева (3 вариант): тогда мячик отскакивает влево. Если же занято (вариант 4), отскакивает в другую сторону.

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

Как создать Arkanoid на JavaScript

Как создать Arkanoid на JavaScript

[Arkanoid #0] Игровой цикл, клавиатура, создание игры Arkanoid на JavaScript
[Arkanoid #1] Создание объекта игрока, Player JavaScript
[Arkanoid #2] Сетка объектов для уничтожения. Создание HTML5 игры на JavaScript
[Arkanoid #3] Шар, столкновения, движение, уничтожение. Создание игры Arkanoid на JavaScript
[Arkanoid #4] Карта уровня в игре на JavaScript
[Arkanoid #5] Арканоид на JavaScript. Очки и проигрыш. Управление шариком.
[Arkanoid #6] Заключительное видео + анонс конкурса!

Эта статья была автоматически добавлена из сообщества ITmozg | программисты

Делаем игру Arkano > 08/03/2015

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

Дополнительно нам понадобятся несколько спрайтов, рисунок в формате PNG для: платформы, шарика и как ни странно кирпичей. Скачать необходимые изображения можно с нашего сервера:

Создаем новый проект File -> New Project

И сразу сделаем несколько папок: Sprites, Sound, Scripts, Scenes, Prefab, Materials

Кликаем правой кнопкой мыши по папке Materials и выбираем Create -> Physics2D Material, можно назвать материал как угодно. Нужно его настроить, у нас два параметра Friction (трение) и Bounciness (пружинистость). Нам нужно, чтобы шарик всегда отскакивал при контакте с другими объектами, без потери скорости, значит коэффициент трения ставим на 0, а пружинистость на 1.

В папке Scripts, создаем новый C# скрипт и назовем его Menedjer, он будет хранить информацию о количестве очков, жизней, а так-же переменные выиграл или проиграл, и вывод информации через UI. Создаем пустой игровой объект GameObject -> Create Empty, назовем его так-же (Menedjer) и вешаем на него наш скрипт. Преступим к редактированию. Подключаем сразу UI кстати говоря:


public static означает, что мы сможем получить доступ к переменной из любого другого скрипта, без необходимости использования обычного метода. Например как показано тут:

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

В функцию Start пишем следующее:

То есть, во время запуска сцены, выключаются кнопки. Выиграл (win) или проиграл (lose), значение false, иначе говоря — нет. Следующая строка, проверка, если текущая сцена (Application.loadedLevel) ровна нулю, то — жизней будет три.

Сделаем вывод текста. Сохраняем скрипт, возвращаемся в редактор.
Надо добавить элементы юзер интерфейса, GameObject -> UI -> Text, вы увидите что-то типа этого:

Переименуем Canvas в UI для удобства. Настроим Text как показано на скриншоте ниже.

Возвращаемся в скрипт и добавим еще одну функцию (на забываем сохранить):

Это для наших кнопок, которые кстати надо тоже добавить еще, GameObject -> UI -> Button. Назовем ее WinButton, текст «Продолжить», теперь добавим действие, функцию GameStart:

В появившемся поле ввода, ставим 1. Дублируем кнопку Ctrl+D имя LoseButton текст «Переиграть», а в поле ввода ставим 0. То есть, получается, что если мы нажимаем например «Продолжить», то отправляем нашей функции 1, а текущий номер плюс единица — переходим на уровень выше, если отправим 0, то просто сцена будет перезагружена.

По краям сцены надо разместить Box Collider 2D, чтобы наш шарик не улетал за пределы экрана. А внизу такой-же коллайдер, но поставить галочку Is Trigger, изменим имя на Killbox и добавим объекту одноименный тег.

Итак, наложим кирпичей. Укомплектуем спрайт будущего кирпича, коллайдером и скриптом, со следующим содержанием:

Имя скрипта Block и пара переменных, прочность и номер. Перетаскиваем объект в папку Prefab.

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

Затем создаем скрипт PackCheck и вешаем его на упаковку наших кирпичей Pack:

Как видно, задача скрипта проверять наличие вложенных объектов, т.е. если все кирпичи будут уничтожены, засчитывается выигрыш.

Займемся шариком. Создаем новый скрипт Ball:

Вешаем его на спрайт шарика и добавляем компоненты Rigidbody 2D и Circle Collider 2D

Не забываем на коллайдер повесить ранее созданный материал, и в скрипт звуки удара. Сам шарик надо перетащить в папку префабов, а со сцены удалить его.

Вроде чего-то не хватает? Ах да, платформа. Кидаем спрайт на сцену, сразу определим позицию по центру и сместим вниз экрана. Теперь надо внутри платформы создать пустышку GameObject -> Create Empty Child и поднимем ее немного вверх Y = 1, назовем пустышку Respawn, это будет точка появления нашего шарика. Box Collider 2D не забываем повесить на платформу. И последний скрипт PlatformControl на сегодня:

Если ничего нигде не забыли, то можно пробовать играть. Собственно всё. :bully:

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих