<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Всё о создании игр</title>
		<link>https://gcup.ru/</link>
		<description>Форум игроделов</description>
		<lastBuildDate>Sun, 21 Dec 2025 09:08:40 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="https://gcup.ru/forum/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>MonoGame на Xamarin для iOS. Проблема с ориентацией экрана</title>
			<link>https://gcup.ru/forum/45-33921-1</link>
			<pubDate>Sun, 21 Dec 2025 09:08:40 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/45&quot;&gt;2D-движки для создания игр&lt;/a&gt;&lt;br /&gt;Автор темы: murzilka6002&lt;br /&gt;Автор последнего сообщения: Искусительница&lt;br /&gt;Количество ответов: 3</description>
			<content:encoded>Занялся портированием игры с XNA на MonoGame для iOS на Mac OC X в IDE Xamarin. &lt;br /&gt;&lt;br /&gt; Так вот, может кто-то сталкивался, проблема заключаеться вот в чем: &lt;br /&gt; на самом старте выбивает ошибку &lt;br /&gt;&lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;MonoTouch.Foundation.MonoTouchException: Objective-C exception thrown. &lt;br /&gt; Name: UIApplicationInvalidInterfaceOrientation Reason: Supported orientations &lt;br /&gt; has no common orientation with the application, and shouldAutorotate is returning YES&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt;&lt;br /&gt; на форумах похожее находил, но никакой из вариантов не исправляет ошибки. Исправляет только добавление DisplayOrientation.Portrait но мне портретное не нужно а только Landscape. Само по себе Landscape не проходить и выбивает ошибку, а если добавть к нему Portrait - работает, но не обслуживает Landscape - изображение не переворачиваеться. &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;public Game1(&amp;#41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphics = new GraphicsDeviceManager(this&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Content.RootDirectory = &quot;Content&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphics.SupportedOrientations = DisplayOrientation.LandscapeLeft | DisplayOrientation.LandscapeRight;// | DisplayOrientation.PortraitDown | DisplayOrientation.Portrait; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphics.PreferredBackBufferHeight = 640; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphics.PreferredBackBufferWidth = 960; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphics.IsFullScreen = true; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Кто-то что-то может подсказать?</content:encoded>
			<category>2D-движки для создания игр</category>
			<dc:creator>murzilka6002</dc:creator>
			<guid>https://gcup.ru/forum/45-33921-1</guid>
		</item>
		<item>
			<title>Как собрать HTML5 приложение в Android Studio 2022?</title>
			<link>https://gcup.ru/forum/87-104176-1</link>
			<pubDate>Sun, 10 Aug 2025 12:19:51 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/87&quot;&gt;Разработка мобильных игр&lt;/a&gt;&lt;br /&gt;Описание темы: На новой версии&lt;br /&gt;Автор темы: tatattanoni&lt;br /&gt;Автор последнего сообщения: PapeyChayu&lt;br /&gt;Количество ответов: 8</description>
			<content:encoded>Не могу собрать HTML5 приложение в Android Studio 2022.3.1. Все уроки от 2015 года или для старых версий Android Studio, где нет таких пунктов и окон. И шаблоны тоже опенсорсные не работают на новой студии. Подскажите, пожалуйста, дайте ссылки на актуальные материалы: статьи, видео, файлы и пр.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://developer.android.com/static/images/studio/studio-hero_960.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;</content:encoded>
			<category>Разработка мобильных игр</category>
			<dc:creator>tatattanoni</dc:creator>
			<guid>https://gcup.ru/forum/87-104176-1</guid>
		</item>
		<item>
			<title>Стена и Персонаж</title>
			<link>https://gcup.ru/forum/59-105168-1</link>
			<pubDate>Sat, 09 Aug 2025 19:52:20 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Описание темы: Проверка касаеться ли игрок стены&lt;br /&gt;Автор темы: Log2g&lt;br /&gt;Автор последнего сообщения: Log2g&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Создаю 2D-платформер. Мне нужно как-то отслеживать, касается ли игрок именно стены (стены, пол и потолок имеют одинаковые теги и слои, так что решение через них не подходит). Пробовал реализовать через рейкаст, но не получилось. Если у кого-то есть варианты, как реализовать такую проверку расскажите, пожалуйста &lt;img rel=&quot;usm&quot; src=&quot;https://gcup.ru/SML/happy.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;^_^&quot; /&gt;</content:encoded>
			<category>Unity</category>
			<dc:creator>Log2g</dc:creator>
			<guid>https://gcup.ru/forum/59-105168-1</guid>
		</item>
		<item>
			<title>Nao движок наш</title>
			<link>https://gcup.ru/forum/3-105166-1</link>
			<pubDate>Tue, 05 Aug 2025 13:10:16 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/3&quot;&gt;Общее обсуждение Игровых движков&lt;/a&gt;&lt;br /&gt;Описание темы: Ужасы удаления&lt;br /&gt;Автор темы: Искусительница&lt;br /&gt;Автор последнего сообщения: Oscillograph&lt;br /&gt;Количество ответов: 6</description>
			<content:encoded>Псс удаление - ее такая проблема. Хорошо что второй пользователь есть. Закрыть не возможно во время удаления - Сделана для мега крутых компов - наверно, вот поэтому и бесплатно положили =) Так еще теперь системник чистить от этой фигни - пришлось другим пользователем удалять с компа этот мусор - чтобы основным пользователем зайти. Не удивительно что вк избавилась от него - это проще заново делать движок для своих нужд, Пока удалял смотрел что там она изучает какие папки core -))) типа свои удаляет, самый прикол диспетчер отказал помогать - командная строка не вызывается =))) это что за ужастик создали. Установить легко избавиться трудно (впервые программа оказывает такое сопротивление). &lt;img rel=&quot;usm&quot; src=&quot;https://gcup.ru/SML/dry.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;&lt;_&lt;&quot; /&gt; и на этом институты будут учить? &lt;img rel=&quot;usm&quot; src=&quot;https://gcup.ru/SML/dry.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;&lt;_&lt;&quot; /&gt;</content:encoded>
			<category>Общее обсуждение Игровых движков</category>
			<dc:creator>Искусительница</dc:creator>
			<guid>https://gcup.ru/forum/3-105166-1</guid>
		</item>
		<item>
			<title>(Помогите!) Новичек просит помощи</title>
			<link>https://gcup.ru/forum/59-105167-1</link>
			<pubDate>Mon, 04 Aug 2025 18:16:45 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Описание темы: Как сделать то, как сделать это&lt;br /&gt;Автор темы: ANONIMUS228&lt;br /&gt;Автор последнего сообщения: GC-Vic&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>(Когда писал полотно текста случайно закрыл страницу и всё удалилось, лень всё детально описывать с начала, поэтому кратко тут опишу всё)&lt;br /&gt;&lt;br /&gt;Ребят, может кто подсказать как грамотно построить архитектуру игры? По моей задумке должен быть абстрактный класс, где будут параметры (ХП,Урон, Скорость передвижения), классы наследники (Например враг - Зелёный, ХП = 100, Урон = 10, Скорость передвижения 6), и инвентари, что будут обрабатывать параметры (Инвентарь:Получения урона и смерти, Инвентарь: Передвижения, Инвентарь: Нанесения урона). &lt;br /&gt;&lt;br /&gt;КАК ПРИМЕР:&lt;br /&gt;&lt;br /&gt;Зелёный&lt;br /&gt; (Параметры отправляются на обработку в инвентари)&lt;br /&gt;ХП = 100 ====&gt; Инвентарь: Получения урона ===&gt; Получение урона = (ХП + Влияние на ХП) - Нанесённый урон; if ХП &lt;= 0 то Death() А Деатх это Destroy Object&lt;br /&gt;Урон = 10 ====&gt; Инвентарь: Нанесения урона ===&gt; Нанесённый урон = Урон + Влияние на урон&lt;br /&gt;Скорость = 6 ===&gt; Инвентарь: Передвижения ===&gt; Передвижение = (Скорость + Влияние на Скорость) * Время&lt;br /&gt;&lt;br /&gt;Я Пока писал, подумал, что может это лучше реализовать через ивенты или события ? И плюс, желательно какой то &quot;Класс прослойка&quot; который будет идентифицировать параметры за каждым юнитом и игроком. Или это лишнее потому что идентификация всё равно будет за объектом юнита и игрока в Сцене?&lt;br /&gt;&lt;br /&gt;В общем, очень прошу объяснить как лучше реализовать архитектуру, и лучше с примерами, потому что я слабо понимаю саму логику написания и иерархию команд. Книги, видео, если кто то не против созвонится в дискорде то вообще огонь. Как то лучше усваивается информация если есть возможность сразу уточнить какую то деталь</content:encoded>
			<category>Unity</category>
			<dc:creator>ANONIMUS228</dc:creator>
			<guid>https://gcup.ru/forum/59-105167-1</guid>
		</item>
		<item>
			<title>Есть желание создать игру с выводом денег</title>
			<link>https://gcup.ru/forum/50-105162-1</link>
			<pubDate>Wed, 30 Jul 2025 12:41:07 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/50&quot;&gt;Движки для разработки OnLine игр&lt;/a&gt;&lt;br /&gt;Описание темы: Обмен игровой валюты на реальные деньги с выводом&lt;br /&gt;Автор темы: Arelurg&lt;br /&gt;Автор последнего сообщения: Arelurg&lt;br /&gt;Количество ответов: 5</description>
			<content:encoded>Идея такая, создать игру про крафт и сбор ресурсов. Начальные ресурсы можно продать за игровую валюту, а можно пустить на крафт вещей. Вещи так же можно продать. Жизнеспособна такая игра? И на каком движке ее лучше сделать?</content:encoded>
			<category>Движки для разработки OnLine игр</category>
			<dc:creator>Arelurg</dc:creator>
			<guid>https://gcup.ru/forum/50-105162-1</guid>
		</item>
		<item>
			<title>Эмулятор NES в каждый проект</title>
			<link>https://gcup.ru/forum/3-104539-1</link>
			<pubDate>Thu, 17 Jul 2025 12:57:52 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/3&quot;&gt;Общее обсуждение Игровых движков&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: TLT&lt;br /&gt;Количество ответов: 5</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size:18pt;&quot;&gt;&lt;b&gt;EmuNes&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;https://i.imgur.com/tkDyPrb.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Разрабатывается на&lt;/b&gt;: C&lt;br /&gt;&lt;b&gt;Поддерживаемые движки&lt;/b&gt;: Движки на SDL3 + Opengl 4/3&lt;br /&gt;&lt;b&gt;Ссылка на проект&lt;/b&gt;: &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://github.com/xverizex/libnes&quot; title=&quot;https://github.com/xverizex/libnes&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://github.com/xverizex/libnes&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Поддерживаемые игры&lt;/b&gt;: Mario Bros (вроде полностью). Bomberman - (Не взрываются стены) (Немного есть проблема со скроллом)&lt;br /&gt;&lt;br /&gt;Я разработчик данного эмулятора. Проведена сложная работа над тем, чтобы он заработал хотя бы на двух играх. В текущем состоянии его пока нельзя использовать, так как в консоль выводится отладочная информация, которая нужна мне для поиска бага в Bomberman. Баги очень сложные и нужно проявить очень сильную мотивацию, чтобы рыскать в ассемблерном коде.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Цель проекта&lt;/b&gt;: Сделать реализацию на большинство платформ, а именно, на Unity, Godot, Unreal Engine, Arduino и другие embedded микроконтроллеры, также добавить поддержку в мой редактор тайлов RetroSprite для рисования для NES. Думаю, если хватит сил, то сделаю полноценную студию, где можно не только рисовать, но и писать код и эмулировать на месте, и отлаживать.&lt;br /&gt;&lt;br /&gt;Я попробовал запустить в 3d эмулятор с выводом в текстуру, работает нормально.&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;https://i.imgur.com/IQJ71tS.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;В целом, я рад, что у меня есть возможность поработать над таким сложным проектом. Я хочу изучить разработку электроники, и взялся за эмуляцию микрочипов, чтобы понимать, что это вообще такое.&lt;br /&gt;&lt;br /&gt;Спасибо за внимание к моему проекту!</content:encoded>
			<category>Общее обсуждение Игровых движков</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/3-104539-1</guid>
		</item>
		<item>
			<title>Хочу обсудить плюсы и минусы своих и готовых движков</title>
			<link>https://gcup.ru/forum/3-104013-1</link>
			<pubDate>Mon, 14 Jul 2025 09:36:17 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/3&quot;&gt;Общее обсуждение Игровых движков&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: Искусительница&lt;br /&gt;Количество ответов: 62</description>
			<content:encoded>Привет всем. Собственно хочу поразмышлять на данную тему и обсудить плюсы и минусы. Если кому есть что сказать, буду рад услышать вашу версию.&lt;br /&gt;&lt;br /&gt;Из плюсов готового движка, это то, что тебе не нужно заморачиваться с изучением внутренней кухни для каждой платформы и ты просто клепаешь игры. Но от таких игроделов я не видел уж прям суперской игры. Объясню что я имею в виду. Когда я раньше общался на эту тему, то слышал такие сообщения, мол твой движок всё равно не переплюнет готовые движки, которые люди делают годами и большими командами. Отчасти да, но, неужели вы создаете такие игры, что собственный движок не может потянуть? Все игры что я видел здесь, те что видел и на других форумах, все такие игры можно сделать на собственном движке. Вы же не делаете ААА игры, а, я понял, вы думаете, что программируя на unity вы потом устроитесь в большую компанию и будете делать по-настоящему крутые игры с крутой графикой? Мне кажется такие есть, но графику делать будут за вас. Или вы услышали где-то, что какой-то Петя без знаний computer science изучил unity, создал игру и стал миллионером? хахахах.&lt;br /&gt;&lt;br /&gt;Я видел, что здесь &lt;b&gt;Storm54&lt;/b&gt; создал игру на unity за несколько часов. хахахха. Там двухмерный платформер. То-есть такой крутой продукт как unity вы используете чтобы создавать такой шлак? Честное слово ребята, объясните мне почему вы не хотите изучить математику и сделать свой движок? Если вы заработаете много денег, то вам придется уезжать из России, чтобы дальше вести бизнес и работать на unity. Если вы простенькие игры делаете, то зачем за этот движок ещё платить? &lt;br /&gt;&lt;br /&gt;Вы наверное думаете, что надо выпускать много игр и какая нибудь стрельнёт. Что ж, это верно, но не забывайте, что вам придется делиться с unity за вашу 2d игру, движок для который пишется за пару дней.</content:encoded>
			<category>Общее обсуждение Игровых движков</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/3-104013-1</guid>
		</item>
		<item>
			<title>Не отображается добавленный объект на сцену</title>
			<link>https://gcup.ru/forum/59-104225-1</link>
			<pubDate>Mon, 14 Jul 2025 09:12:37 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: nickson_b_k&lt;br /&gt;Автор последнего сообщения: Искусительница&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Доброго времени!&lt;br /&gt;Изучаю курс по unity.&lt;br /&gt;В уроке автор перетаскивает объект на сцену и объект там появляется.&lt;br /&gt;&lt;br /&gt;Когда я выполняю те же действия, сцена остаётся пустой. Но при этом объект добавляется в список слева от сцены.&lt;br /&gt;&lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://ibb.co/R2wrJCf&quot; title=&quot;https://ibb.co/R2wrJCf&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://i.ibb.co/1ZWy491/image.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/a&gt;</content:encoded>
			<category>Unity</category>
			<dc:creator>nickson_b_k</dc:creator>
			<guid>https://gcup.ru/forum/59-104225-1</guid>
		</item>
		<item>
			<title>(Помогите!) Мультиплеер на Mirror Unity</title>
			<link>https://gcup.ru/forum/59-104557-1</link>
			<pubDate>Mon, 14 Jul 2025 09:08:42 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Описание темы: Я не могу запустить игру на двух разных устройствах.&lt;br /&gt;Автор темы: gasteros&lt;br /&gt;Автор последнего сообщения: Искусительница&lt;br /&gt;Количество ответов: 7</description>
			<content:encoded>Добрый день, как уже указано в теме я создал игру в Unity используя Mirror и не могу запустить свою игру на двух разных устройствах и подключить друг к другу две игровые сессии. &lt;b&gt;Я создавал игру по вот этим гайдам:&lt;/b&gt; &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://rutube.ru/video/052c73de099db05345e8350679999dd4/&quot; title=&quot;https://rutube.ru/video/052c73de099db05345e8350679999dd4/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://rutube.ru/video/052c73de099db05345e8350679999dd4/&lt;/a&gt;. (Закончил вторую часть) И обнаружил, что игра у меня связывается только на компьютере(, если запускаю сразу две сессии). Но на разных устройствах сервера, созданные другим компьютером, просто невозможно увидеть.При этом сразу уточняю, что некоторые аспекты я чуть менял, поскольку пользовался я конечно более новыми версиями и Unity и Mirror. Я посмотрел информацию на счёт того, как это решить и толком не разобрался. Пожалуйста, помогите горе разработчику!!!</content:encoded>
			<category>Unity</category>
			<dc:creator>gasteros</dc:creator>
			<guid>https://gcup.ru/forum/59-104557-1</guid>
		</item>
		<item>
			<title>Посоветуйте движок форума для игрового проекта</title>
			<link>https://gcup.ru/forum/3-98087-1</link>
			<pubDate>Mon, 14 Jul 2025 08:24:51 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/3&quot;&gt;Общее обсуждение Игровых движков&lt;/a&gt;&lt;br /&gt;Автор темы: Serjj&lt;br /&gt;Автор последнего сообщения: Искусительница&lt;br /&gt;Количество ответов: 7</description>
			<content:encoded>Нужен совет от игроделов, которые в своих проектах используют также форумы.&lt;br /&gt;Что посоветуете прикрутить? Прежде всего - с точки зрения спамоустойчивости, ибо уже столкнулся с волнами всевозможного мусора, который приходится периодически вычищать.&lt;br /&gt;Что лучше использовать - платные движки, бесплатные, самописные?</content:encoded>
			<category>Общее обсуждение Игровых движков</category>
			<dc:creator>Serjj</dc:creator>
			<guid>https://gcup.ru/forum/3-98087-1</guid>
		</item>
		<item>
			<title>Игрок проходит сквозь стены</title>
			<link>https://gcup.ru/forum/59-104227-1</link>
			<pubDate>Mon, 14 Jul 2025 07:18:17 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: Gotor228&lt;br /&gt;Автор последнего сообщения: Искусительница&lt;br /&gt;Количество ответов: 8</description>
			<content:encoded>Игрок(капсула проходит сквозь стены, колайдеры висят, риджетбади висят только на игроке&lt;br /&gt;когда он ил=дет к стена она его потихоньку выталкивает, но это ему не капли не мешает пройти через нее&lt;br /&gt;https://youtu.be/IwHONk-X1FM&lt;br /&gt;&lt;br /&gt;что делать?</content:encoded>
			<category>Unity</category>
			<dc:creator>Gotor228</dc:creator>
			<guid>https://gcup.ru/forum/59-104227-1</guid>
		</item>
		<item>
			<title>Вопрос-[ответ] по Unity</title>
			<link>https://gcup.ru/forum/59-8269-1</link>
			<pubDate>Tue, 20 May 2025 08:23:14 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Описание темы: Задаём свои вопросы&lt;br /&gt;Автор темы: QWER56&lt;br /&gt;Автор последнего сообщения: MatKosiomov&lt;br /&gt;Количество ответов: 8915</description>
			<content:encoded>&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;b&gt;Вопрос-[Ответ] по Unity3d&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt; &lt;li&gt; &lt;a class=&quot;link&quot; href=&quot;http://gcup.ru/forum/59-22078-1&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;База скриптов Unity3d&lt;/a&gt; &lt;br /&gt; &lt;li&gt; &lt;a class=&quot;link&quot; href=&quot;http://gcup.ru/forum/59-20065-1&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Курс Уроков по Unity 3D от Alcatraz&lt;/a&gt;</content:encoded>
			<category>Unity</category>
			<dc:creator>QWER56</dc:creator>
			<guid>https://gcup.ru/forum/59-8269-1</guid>
		</item>
		<item>
			<title>Реализация интуитивной камеры в Godot 4.0</title>
			<link>https://gcup.ru/forum/46-104495-1</link>
			<pubDate>Tue, 17 Dec 2024 17:17:46 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/46&quot;&gt;3D движки для разработки игр&lt;/a&gt;&lt;br /&gt;Описание темы: Реализация приближения и отдаления камеры в 3D пространстве&lt;br /&gt;Автор темы: Cr1stal99&lt;br /&gt;Автор последнего сообщения: Cr1stal99&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Прошу прощения, если я вдруг создал тему не там где нужно, я тут совсем недавно&lt;br /&gt;&lt;br /&gt;Хочу сразу уточнить что версия моего движка Godot 4.0 и я не могу перейти на версию выше, потому-что там какие-то проблемы с отображением интерфейса, текст отображается криво, видно только половину диагонально, сцена точно также - видно только половину по диагонали.&lt;br /&gt;&lt;br /&gt;Уважаемые игроделы, перед тем как написать на форум, я правда долго пытался решить проблему сам, ну как сам, с помощью искусственного интеллекта и видео уроков, буду честен, я не имею опыта и знаний, но загорелся желанием создать относительно простую 3D игру с 2D пиксельными персонажами (2.5D). Мне удалось добавить в сцену анимированного персонажа, настроить управление и смену анимации, добавил в сцену три стены (ноды типа StaticBody в ветке которых есть MeshInstence и CollisionShade) для экспериментов с камерой и сижу теперь ломаю голову, пытаясь настроить камеру так, чтобы проходя мимо препятствий камера приближалась и возвращалась в обратное положение когда препятствий нет. Сначала я думал о том, что это понадобится для того, чтобы персонаж имел возможность войти внутрь здания, а потом понял, что интуитивная камера должна быть в моём проекте в любом случае, так как свободного осмотра камерой я делать пока не буду и в таком случае персонаж будет постоянно теряться за зданиями в сцене. У меня есть RayCast3D, он является дочерним нодом для Camera3D. Отладчик абсолютно молчит, никаких ошибок, но камера не реагирует вообще и двигается так, как двигалась раньше, то-есть только в зависимости от передвижения персонажа, так как камера является дочерней ему. Вот код который висит на камере:&lt;br /&gt;&lt;br /&gt;extends Camera3D&lt;br /&gt;&lt;br /&gt;@export var target: CharacterBody3D # Узел, к которому привязана камера (например, персонаж)&lt;br /&gt;@export var min_distance: float = 2.0 # Минимальная дистанция камеры до цели&lt;br /&gt;@export var max_distance: float = 10.0 # Максимальная дистанция камеры до цели&lt;br /&gt;@export var camera_speed: float = 5.0 # Скорость перемещения камеры&lt;br /&gt;&lt;br /&gt;var current_distance: float = max_distance # Текущая дистанция&lt;br /&gt;var raycast: RayCast3D # RayCast для проверки препятствий&lt;br /&gt;&lt;br /&gt;func _ready():&lt;br /&gt;# Создаём и настраиваем RayCast3D&lt;br /&gt;raycast = RayCast3D.new()&lt;br /&gt;add_child(raycast)&lt;br /&gt;raycast.collide_with_areas = true&lt;br /&gt;raycast.collide_with_bodies = true&lt;br /&gt;&lt;br /&gt;func _physics_process(delta):&lt;br /&gt;if not target:&lt;br /&gt;return&lt;br /&gt;&lt;br /&gt;# Направляем RayCast от камеры к цели&lt;br /&gt;var target_position = target.global_position&lt;br /&gt;var camera_direction = (global_position - target_position).normalized() # Направление от камеры к цели&lt;br /&gt;&lt;br /&gt;# Обновляем RayCast с расчётом позиции камеры&lt;br /&gt;raycast.global_position = global_position&lt;br /&gt;raycast.target_position = target_position # Луч должен идти от камеры к цели&lt;br /&gt;&lt;br /&gt;# Проверяем, сталкивается ли луч с препятствием&lt;br /&gt;if raycast.is_colliding():&lt;br /&gt;# При столкновении с препятствием - уменьшаем дистанцию камеры&lt;br /&gt;var collision_point = raycast.get_collision_point()&lt;br /&gt;var distance_to_collision = (collision_point - target_position).length()&lt;br /&gt;current_distance = lerp(current_distance, max(min_distance, distance_to_collision), camera_speed * delta)&lt;br /&gt;else:&lt;br /&gt;# Если препятствий нет, возвращаем дистанцию к максимальному значению&lt;br /&gt;current_distance = lerp(current_distance, max_distance, camera_speed * delta)&lt;br /&gt;&lt;br /&gt;# Обновляем позицию камеры&lt;br /&gt;global_position = target_position - camera_direction * current_distance&lt;br /&gt;look_at(target_position) # Ориентируем камеру на цель&lt;br /&gt;&lt;br /&gt;Прошу помощи у вас, те, кто читает этот пост, буду очень благодарен. Спасибо за внимание&lt;br /&gt;&lt;br /&gt;Прикреплю пару скриншотов, чтобы было чуть более широкое представление о проекте&lt;br /&gt;Ссылка на imgur: https://imgur.com/a/TpOoUvd&lt;br /&gt;&lt;br /&gt;P.S. На данный момент попробовал установить плагин высоконастраиваемой камеры, много ошибок, не работает как надо. Удалось настроить сближение и отдаление с помощью ArmSpring3D но камера слегка дёргается когда отдаляется или сближается</content:encoded>
			<category>3D движки для разработки игр</category>
			<dc:creator>Cr1stal99</dc:creator>
			<guid>https://gcup.ru/forum/46-104495-1</guid>
		</item>
		<item>
			<title>Как сделать меню игры NeoAxis Engine?</title>
			<link>https://gcup.ru/forum/3-104332-1</link>
			<pubDate>Fri, 06 Sep 2024 05:17:17 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/3&quot;&gt;Общее обсуждение Игровых движков&lt;/a&gt;&lt;br /&gt;Описание темы: Как сделать меню игры NeoAxis Engine?&lt;br /&gt;Автор темы: COOLGAMER&lt;br /&gt;Автор последнего сообщения: COOLGAMER&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Как сделать меню игры NeoAxis Engine?</content:encoded>
			<category>Общее обсуждение Игровых движков</category>
			<dc:creator>COOLGAMER</dc:creator>
			<guid>https://gcup.ru/forum/3-104332-1</guid>
		</item>
		<item>
			<title>Разные AnimatorController под разных персонажей</title>
			<link>https://gcup.ru/forum/59-104142-1</link>
			<pubDate>Sat, 01 Jun 2024 17:08:36 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: Hichas&lt;br /&gt;Автор последнего сообщения: tac&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Доброго времени суток!&lt;br /&gt;&lt;br /&gt;Пытаюсь сделать рогалик на подобии Vampire Survivors и у меня возник вопрос как мне реализовать нормальный выбор персонажей.&lt;br /&gt;&lt;br /&gt;Суть проблемы:&lt;br /&gt;Есть спрайты 2d персонажей с разным количеством спрайтов под разные анимации, т.е. есть персонаж А с 10 спрайтами под анимацию бега и есть персонаж Б с 12 спрайтами под анимацию бега.&lt;br /&gt;Через SpriteLibrary и единый контроллер анимаций не получается сделать, т.е. я вынужден под каждого персонажа пилить отдельные анимации и отдельные контроллеры, поэтому мне нужно уметь при выборе персонажа устанавливать его контроллер анимаций, что мне не очень нравится.&lt;br /&gt;&lt;br /&gt;В связи с этим вопрос, как можно по человечески реализовать подобную механику при таких условиях и не делать префаб под каждого персонажа.</content:encoded>
			<category>Unity</category>
			<dc:creator>Hichas</dc:creator>
			<guid>https://gcup.ru/forum/59-104142-1</guid>
		</item>
		<item>
			<title>подскажите движок для новичка</title>
			<link>https://gcup.ru/forum/47-104268-1</link>
			<pubDate>Mon, 20 May 2024 18:38:54 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/47&quot;&gt;Поиск и выбор Движков&lt;/a&gt;&lt;br /&gt;Описание темы: для 3д игры&lt;br /&gt;Автор темы: vovanhurcane&lt;br /&gt;Автор последнего сообщения: vovanhurcane&lt;br /&gt;Количество ответов: 5</description>
			<content:encoded>здравствуйте, я хочу сделать свою 3д игру в старом стиле, можете подсказать движок для этого, но не слишком сложный или чтобы по нему были туториалы &lt;img rel=&quot;usm&quot; src=&quot;https://gcup.ru/SML/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;:)&quot; /&gt;</content:encoded>
			<category>Поиск и выбор Движков</category>
			<dc:creator>vovanhurcane</dc:creator>
			<guid>https://gcup.ru/forum/47-104268-1</guid>
		</item>
		<item>
			<title>Как сделать, чтобы парент констрейн учитывал скейл родителя?</title>
			<link>https://gcup.ru/forum/59-104170-1</link>
			<pubDate>Tue, 13 Feb 2024 06:44:10 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: Jlexa123&lt;br /&gt;Автор последнего сообщения: bureviy&lt;br /&gt;Количество ответов: 3</description>
			<content:encoded>Как сделать, чтобы парент констрейн учитывал скейл родителя?&lt;br /&gt;&lt;br /&gt;Допустим у нас есть иерархия:&lt;br /&gt;Game Object&lt;br /&gt;__Full&lt;br /&gt;____Hand_R&lt;br /&gt;____Leg_R&lt;br /&gt;____Body&lt;br /&gt;____Hand_L&lt;br /&gt;____Leg_L&lt;br /&gt;&lt;br /&gt;Если повесить парент констрейн на Hand_R, Leg_R и привязать их к Body, то при изменении скейла у GameObject все части разъедутся в разные стороны. Как сделать, чтобы этого не произошло?</content:encoded>
			<category>Unity</category>
			<dc:creator>Jlexa123</dc:creator>
			<guid>https://gcup.ru/forum/59-104170-1</guid>
		</item>
		<item>
			<title>Кости персонажа из Mixamo</title>
			<link>https://gcup.ru/forum/60-104222-1</link>
			<pubDate>Sat, 10 Feb 2024 19:03:46 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/60&quot;&gt;Unreal Engine&lt;/a&gt;&lt;br /&gt;Автор темы: AleksJander&lt;br /&gt;Автор последнего сообщения: AleksJander&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Приветствую всех!&lt;br /&gt;Кто занимается анимированием персонажей дайте плз дельный совет!&lt;br /&gt;У меня есть персонаж воксельной графики в т-позе. Его я &quot;обработал&quot; в Blender (убирал лишние полигоны при помощи плагина MagicaVoxel),после загнал в Mixamo. После обнаружил,что кости рук в анимации не сходятся с самими руками на локтях при сгибе :`(&lt;br /&gt;&lt;br /&gt;&lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://postimages.org/&quot; title=&quot;https://postimages.org/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://i.postimg.cc/V6dfqshX/2024-02-10-21-24-13.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;З.ы. может можно потом это как то подправить по анимации(ям) в Unreale Engine?</content:encoded>
			<category>Unreal Engine</category>
			<dc:creator>AleksJander</dc:creator>
			<guid>https://gcup.ru/forum/60-104222-1</guid>
		</item>
		<item>
			<title>Новые игровые движки</title>
			<link>https://gcup.ru/forum/3-21949-1</link>
			<pubDate>Wed, 07 Feb 2024 10:41:32 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/3&quot;&gt;Общее обсуждение Игровых движков&lt;/a&gt;&lt;br /&gt;Описание темы: сообщаем и обсуждаем&lt;br /&gt;Автор темы: Cre-game&lt;br /&gt;Автор последнего сообщения: slagusev&lt;br /&gt;Количество ответов: 61</description>
			<content:encoded>Уважаемые пользователи! Просьба писать в эту тему о новых игровых движках, и о движках, отсутствующих в базе движков GcUp.ru. Мы будем добавлять новые движки в нашу базу. &lt;br /&gt;&lt;br /&gt; Просьба давать точное название движка, ссылку на официальный сайт, и, если не затруднит - небольшое описание.</content:encoded>
			<category>Общее обсуждение Игровых движков</category>
			<dc:creator>Cre-game</dc:creator>
			<guid>https://gcup.ru/forum/3-21949-1</guid>
		</item>
		<item>
			<title>догонялки в 3D Rad</title>
			<link>https://gcup.ru/forum/3-104217-1</link>
			<pubDate>Tue, 06 Feb 2024 11:55:56 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/3&quot;&gt;Общее обсуждение Игровых движков&lt;/a&gt;&lt;br /&gt;Автор темы: steveN307&lt;br /&gt;Автор последнего сообщения: steveN307&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>помогите сделать игру-догонялки (с ИИ) в 3D Rad&lt;br /&gt;как сделать чтоб при касании с машиной происходил гейм овер</content:encoded>
			<category>Общее обсуждение Игровых движков</category>
			<dc:creator>steveN307</dc:creator>
			<guid>https://gcup.ru/forum/3-104217-1</guid>
		</item>
		<item>
			<title>Смена префаба выстрела при смене оружия</title>
			<link>https://gcup.ru/forum/59-104185-1</link>
			<pubDate>Sun, 04 Feb 2024 21:24:13 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: ShadiestColt&lt;br /&gt;Автор последнего сообщения: killing002&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Есть несколько видов оружия и у каждого есть свой префаб выстрела, не могу понять, как это реализовать&lt;br /&gt;Код:&lt;br /&gt;Класс, где выбирается оружие&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;public class Weapon : Item&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public int minDamage;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//public GameObject bulletPrefabSteel;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//public GameObject bulletPrefabBone;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public override bool use(PlayerMove player, ItemInstance itemData&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player.activeItem = itemData;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player.damage.damage = minDamage;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//player.bulletPrefab.bulletPrefab = bulletPrefabSteel;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//player.bulletPrefab.bulletPrefab = bulletPrefabBone;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Класс экземпляра предмета&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;public class ItemInstance&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#91;SerializeReference] public Item itemData;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#91;SerializeField] public int damage;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public bool use(PlayerMove player&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return itemData.use(player, this&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Класс выстрелов&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;public class Shooting : MonoBehaviour&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public Transform firePoint;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public GameObject bulletPrefab;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public Animator animator;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public Camera cam;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public float bulletForce = .001f;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public float range = 10f;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#91;HideInInspector]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public float offset = 270;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private float attackTime = .75f;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private float attackCounter = .75f;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public float shootRate = 1f;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public float nextShoot = 1f;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private bool isAttack;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Update is called once per frame&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void Update(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (isAttack&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attackCounter -= Time.deltaTime;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (attackCounter &lt;= 0&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animator.SetBool(&quot;isAttack&quot;, false&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isAttack = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Input.GetMouseButtonDown(0&amp;#41; &amp;&amp; Time.time&gt;=nextShoot&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nextShoot= Time.time +1/shootRate;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attackCounter = attackTime;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animator.SetBool(&quot;isAttack&quot;, true&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Shoot(&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isAttack = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector3 dif = Camera.main.ScreenToWorldPoint(Input.mousePosition&amp;#41; - transform.position;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float rotZ = Mathf.Atan2(dif.y, dif.x&amp;#41; * Mathf.Rad2Deg;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transform.rotation = Quaternion.Euler(0f, 0f, rotZ + offset&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void Shoot(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GameObject bullet = Instantiate(bulletPrefab, firePoint.position, firePoint.rotation&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Rigidbody2D rb = bullet.GetComponent&lt;Rigidbody2D&gt;(&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rb.AddForce(firePoint.up * bulletForce, ForceMode2D.Impulse&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;И кусок кода, который выбирает выбранное оружие, чтобы его использовать&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;public void use(int i&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ItemInstance item = GetComponent&lt;Inventory&gt;(&amp;#41;.getItem(i&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (item == null&amp;#41; return;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(item.use(this&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetComponent&lt;Inventory&gt;(&amp;#41;.removeItem(i&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Вот тут задается параметры оружия&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://i.postimg.cc/BbhBf0gN/2023-12-02-143124101.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;</content:encoded>
			<category>Unity</category>
			<dc:creator>ShadiestColt</dc:creator>
			<guid>https://gcup.ru/forum/59-104185-1</guid>
		</item>
		<item>
			<title>Как сместить поворот камеры?</title>
			<link>https://gcup.ru/forum/59-104209-1</link>
			<pubDate>Sun, 04 Feb 2024 21:19:55 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: dzrone3488&lt;br /&gt;Автор последнего сообщения: killing002&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>У меня есть камера, которая поворачивается с помощью мышки (FPS). Иногда у моего контроллера меняется вектор гравитации, однако камера не меняет поворота и всё работает так будто бы я стою на земле, хотя могу стоять в этот момент на условной стенке. По сути всё что мне нужно сделать, это просто повернуть камеру так, как если бы я поворачивал родителя этой камеры в скрипте, но родителя у камеры нет и она не является дочерней моего контроллера (и не будет по правилам). Как мне сместить все повороты мышкой относительно, того как в пространстве повёрнут контроллер, который является отдельным от камеры объектом? Камера прикреплена к контроллеру физикой rb.</content:encoded>
			<category>Unity</category>
			<dc:creator>dzrone3488</dc:creator>
			<guid>https://gcup.ru/forum/59-104209-1</guid>
		</item>
		<item>
			<title>Unity: триггер и запуск анимации по времени</title>
			<link>https://gcup.ru/forum/59-104211-1</link>
			<pubDate>Sun, 04 Feb 2024 21:17:17 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Описание темы: Как добавить задержку в метод выполнения анимации при выходе&lt;br /&gt;Автор темы: Ovad&lt;br /&gt;Автор последнего сообщения: killing002&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Здравствуйте. Как добавить задержку в метод выполнения анимации при выходе из триггера, чтоб анимация срабатывала не сразу, а через определенное время? Возможно, есть команда запуска анимации по времени, вместо обычного Play? Если есть несколько методов реализации, то прошу описать их на примере кода ниже. Например через coroutine, invoke или более простые методы аниматора. Пример кода:&lt;br /&gt;&lt;br /&gt;public class OpenDoor : MonoBehaviour&lt;br /&gt;{&lt;br /&gt; public Animator animator;&lt;br /&gt; public void OnTriggerEnter(Collider other)&lt;br /&gt; {&lt;br /&gt; if(other.tag == &quot;Put&quot;)&lt;br /&gt; {&lt;br /&gt; animator.Play(&quot;OpenDoors&quot;);&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; void OnTriggerExit(Collider other2)&lt;br /&gt; {&lt;br /&gt; if (other2.tag == &quot;Put&quot;)&lt;br /&gt; {&lt;br /&gt; animator.Play(&quot;CloseDoors&quot;);&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt;}</content:encoded>
			<category>Unity</category>
			<dc:creator>Ovad</dc:creator>
			<guid>https://gcup.ru/forum/59-104211-1</guid>
		</item>
		<item>
			<title>Моргание глаз у персонажа</title>
			<link>https://gcup.ru/forum/60-104208-1</link>
			<pubDate>Sun, 21 Jan 2024 10:52:07 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/60&quot;&gt;Unreal Engine&lt;/a&gt;&lt;br /&gt;Автор темы: AleksJander&lt;br /&gt;Автор последнего сообщения: AleksJander&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Приветствую всех!&lt;br /&gt;Разрабатываю игру (фэнтези-рпг,графика воксельная) в Unreal Engine 4&lt;br /&gt;У меня есть персонаж,хочу добавить/сделать ему моргание глаз.&lt;br /&gt;&lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://disk.yandex.ru/i/coCCQJAb9xJQ-Q&quot; title=&quot;https://disk.yandex.ru/i/coCCQJAb9xJQ-Q&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;My WebPage&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Сам персонаж (вернее его голова),плюс спрайт &quot;нарисованными&quot; глазами-открытыми,а так же с закрытыми (спрайты в png формате).&lt;br /&gt;За счет наложений спрайтов на лицо,персонаж должен моргать глазами.&lt;br /&gt;&lt;br /&gt;З.ы. ничего похожего,как правильно сделать,я так и не нашел :`(&lt;br /&gt;&lt;br /&gt;Подсобите мне плз с правильной схемой в блупринтах.&lt;br /&gt;&lt;br /&gt;* Может кто то делал для своей игры нечто похожее (видео для наглядности очень бы мне помогло... думаю да не только мне одному)</content:encoded>
			<category>Unreal Engine</category>
			<dc:creator>AleksJander</dc:creator>
			<guid>https://gcup.ru/forum/60-104208-1</guid>
		</item>
		<item>
			<title>Не работает Unity3D и Bitbucket</title>
			<link>https://gcup.ru/forum/59-104197-1</link>
			<pubDate>Wed, 10 Jan 2024 09:33:45 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: MegaMan11&lt;br /&gt;Автор последнего сообщения: Storm54&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Привет всем на 2 года ушел из Gamedevа, сейчас решил поработать на своим проектом, но оказалась что не могу обычные вещи ( я из России )&lt;br /&gt;1 Не могу зайти в UnityID как восстановить если почта была mail.ru? ( на нем множество Ассетов купленных осталось)&lt;br /&gt;Мне приходит сообщение на почту, что вы можете реснуть пароль я его переделываю, Пишу почту , он пишет , что нужна 2 факторная Идентификация Что на телефон придет СМС с кодом, но она не приходит!!! Без СМС кода не получается авторизоваться! Что делать? &lt;br /&gt;2 Не могу зайти в Bitbucket! Каким сейчас пользуетесь репозиторием.&lt;br /&gt;3 Каким кто VPN Безопасным пользуетесь для работы из России?</content:encoded>
			<category>Unity</category>
			<dc:creator>MegaMan11</dc:creator>
			<guid>https://gcup.ru/forum/59-104197-1</guid>
		</item>
		<item>
			<title>Условие для показа текста Unity</title>
			<link>https://gcup.ru/forum/59-104168-1</link>
			<pubDate>Tue, 09 Jan 2024 13:55:43 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: Meerkat_GG&lt;br /&gt;Автор последнего сообщения: Seleborn&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Приветствую. Как должен выглядеть код через оператор If, чтобы реализовать систему достижений?&lt;br /&gt;Триггер получения достижения - переход на сцену. Список достижений на отдельной панели. Если триггер не активирован, вместо полученного достижения должен быть другой текст на этой панели (например, просто название ачивки и &quot;не получено&quot;).&lt;br /&gt;&lt;br /&gt;if (SceneManager.GetActiveScene().buildIndex == 1)&lt;br /&gt;&lt;br /&gt;Что добавить?</content:encoded>
			<category>Unity</category>
			<dc:creator>Meerkat_GG</dc:creator>
			<guid>https://gcup.ru/forum/59-104168-1</guid>
		</item>
		<item>
			<title>UI rect, нужна помощь</title>
			<link>https://gcup.ru/forum/59-104200-1</link>
			<pubDate>Tue, 09 Jan 2024 13:34:39 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: Seleborn&lt;br /&gt;Автор последнего сообщения: Seleborn&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Суть вот в чем. есть панель aptekaZdanie, к ней креплю префаб apt2, теперь требуется сменить привязку к левому верхнему углу, и переместить на 200 единиц вправо и 100 вниз (условно), никак не могу разобраться с этими UI примочками) &lt;br /&gt;вот скрипт&lt;br /&gt;Vector3 tempVector=new Vector3(0,0,0);&lt;br /&gt; Quaternion qua=new Quaternion(0,0,0,0);&lt;br /&gt; Apt2 = Instantiate(aptPrefab, tempVector, qua);&lt;br /&gt; Apt2.transform.SetParent(aptekaZdanie.transform);&lt;br /&gt; Apt2.transform.position = aptekaZdanie.transform.position;&lt;br /&gt; RectTransform tempRect = Apt2.GetComponent&lt;RectTransform&gt;();&lt;br /&gt;</content:encoded>
			<category>Unity</category>
			<dc:creator>Seleborn</dc:creator>
			<guid>https://gcup.ru/forum/59-104200-1</guid>
		</item>
		<item>
			<title>Скрипт работает на одном объекте, но не работает на дубле</title>
			<link>https://gcup.ru/forum/59-104195-1</link>
			<pubDate>Fri, 05 Jan 2024 18:28:14 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Описание темы: Скрипт работает на одном объекте, но не работает на дубле&lt;br /&gt;Автор темы: Seleborn&lt;br /&gt;Автор последнего сообщения: Seleborn&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Ситуация следующая - есть объект UI с имунем Lec1, на нем подвешены еще элементы текста и кнопка. Скрипт определяет номер (1), по нему обращается к скрипту в котором созданы экземпляры другого класса и уложены в список. В первом объекте все отлично, а если создать дубликат объекта, то первый объект все нормально меняет в полях, а второй выдает ощибку ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.&lt;br /&gt;Parameter name: index&lt;br /&gt;скрипт с базой экземпляров:&lt;br /&gt;&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerLWBxOb&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerLWBxOb&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerLWBxOb&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerLWBxOb&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerLWBxOb&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerLWBxOb&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerLWBxOb&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerLWBxOb&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerLWBxOb&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;&lt;br /&gt;using System.Collections;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using UnityEngine;&lt;br /&gt;&lt;br /&gt;public class LecCont : MonoBehaviour//Создание базы лекарств&lt;br /&gt;{&lt;br /&gt;// Start is called before the first frame update&lt;br /&gt;public List&lt;Lecarstvo&gt; listLecarstvos = new List&lt;Lecarstvo&gt;();&lt;br /&gt;public Lecarstvo Lek1;&lt;br /&gt;public Lecarstvo Lek2;&lt;br /&gt;public Lecarstvo Lek3;&lt;br /&gt;// Start is called before the first frame update&lt;br /&gt;void Awake()&lt;br /&gt;{&lt;br /&gt;Lek();&lt;br /&gt;}&lt;br /&gt;void Lek()//Создание экземпляров лекарств и занесение их в список&lt;br /&gt;{&lt;br /&gt;Lek1 = new Lecarstvo(&quot;Лекарство от голода&quot;, 15f,&lt;br /&gt;1, 1, 15, 1, 1);&lt;br /&gt;listLecarstvos.Add(Lek1);&lt;br /&gt;Lek2 = new Lecarstvo(&quot;Лекарство от совести&quot;, 500f,&lt;br /&gt;0, 0, 35, 1, 1);&lt;br /&gt;listLecarstvos.Add(Lek2);&lt;br /&gt;Lek3 = new Lecarstvo(&quot;Лекарство от глаза&quot;, 5000f,&lt;br /&gt;0, 0, 35, 1, 1);&lt;br /&gt;listLecarstvos.Add(Lek3);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class Lecarstvo&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;public string name; //название&lt;br /&gt;public float startCost; //стартовая стоимость&lt;br /&gt;public int currentNumber; //число на складе&lt;br /&gt;public int numberOfWorkers; //количество работников на заводе&lt;br /&gt;public int costForSell; //стоимость продажи в аптеке стартовая&lt;br /&gt;public float prodUpgrade; //кэффициент производства&lt;br /&gt;public float costUpgrade; //коэффициент к цене в аптеке&lt;br /&gt;&lt;br /&gt;public Lecarstvo(string name, float startCost, int currentNumber, int numberOfWorkers, int costForSell,&lt;br /&gt;float prodUpgrade, float costUpgrade) //класс для лекарств&lt;br /&gt;{&lt;br /&gt;this.name = name;&lt;br /&gt;this.startCost = startCost;&lt;br /&gt;this.currentNumber = currentNumber;&lt;br /&gt;this.numberOfWorkers = numberOfWorkers;&lt;br /&gt;this.costForSell = costForSell;&lt;br /&gt;this.prodUpgrade = prodUpgrade;&lt;br /&gt;this.costUpgrade = costUpgrade;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;&lt;br /&gt;Скрипт с вызовом этих экземпляров и заполнением полей&lt;br /&gt;&lt;br /&gt;&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerrtwn3B&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerrtwn3B&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerrtwn3B&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerrtwn3B&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerrtwn3B&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerrtwn3B&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerrtwn3B&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerrtwn3B&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerrtwn3B&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using TMPro;&lt;br /&gt;using UnityEngine;&lt;br /&gt;using UnityEngine.UI;&lt;br /&gt;&lt;br /&gt;public class RightPanelSorter : MonoBehaviour&lt;br /&gt;{&lt;br /&gt;#region LocalPeremennie&lt;br /&gt;public string lecarstvoName;//название лекарства&lt;br /&gt;public int lecarsvaSklad;//лекарств на складе&lt;br /&gt;public float lecarstvoCostUp;//Стоимость покупки рабочего&lt;br /&gt;public int lecarstvoWorkers;//Количество рабочих&lt;br /&gt;[HideInInspector] public int numberOfLecarstva;//порядковый номер лекарства&lt;br /&gt;private GameObject GM;&lt;br /&gt;private LecCont Lc;&lt;br /&gt;#endregion&lt;br /&gt;&lt;br /&gt;#region PublicGO&lt;br /&gt;public TextMeshProUGUI aname;//поле с именем&lt;br /&gt;public Text asklad;//поле с количеством на складе&lt;br /&gt;public Text acost;//поле со стоимостью апгрейда&lt;br /&gt;public Text aworkers;//поле с рабочими&lt;br /&gt;public Button aupButton;//доступ к кнопке&lt;br /&gt;#endregion&lt;br /&gt;&lt;br /&gt;private void Awake()&lt;br /&gt;{&lt;br /&gt;GM=GameObject.Find(&quot;GameManager&quot;);&lt;br /&gt;Lc = GM.GetComponent&lt;LecCont&gt;();//Доступ к базе лекаств&lt;br /&gt;zapolnenie();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void zapolnenie()&lt;br /&gt;{&lt;br /&gt;string temp = gameObject.name.Substring(3);//определение номера кнопки (лекарства)&lt;br /&gt;numberOfLecarstva = int.Parse(temp.Replace(&quot; &quot;, string.Empty))-1;&lt;br /&gt;&lt;br /&gt;float Temp = (Lc.listLecarstvos[numberOfLecarstva].startCost);&lt;br /&gt;lecarstvoCostUp = Mathf.Round(Temp);&lt;br /&gt;acost.text = lecarstvoCostUp.ToString();&lt;br /&gt;asklad.text = Lc.listLecarstvos[numberOfLecarstva].currentNumber.ToString();&lt;br /&gt;aworkers.text = Lc.listLecarstvos[numberOfLecarstva].numberOfWorkers.ToString();&lt;br /&gt;&lt;br /&gt;aname.text = Lc.listLecarstvos[numberOfLecarstva].name;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;&lt;br /&gt;Помогите разобраться, пожалуйста&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Добавлено&lt;/b&gt; (05 Января 2024, 19:10)&lt;br /&gt;---------------------------------------------&lt;br /&gt;от второго объекта приходит отклик, что он определил номер кнопки, вычел единицу и знает номер обращения к списку - 1, но дальше происходит лажа, как я понимаю, скрипт со второго объекта уже не может обратиться к базе, даже если все параметры поставить 0, чтобы выдавал те же данные что и первый объект. Возможно есть боле простой способ хранения данных стороннего класса с укладывание в базу??</content:encoded>
			<category>Unity</category>
			<dc:creator>Seleborn</dc:creator>
			<guid>https://gcup.ru/forum/59-104195-1</guid>
		</item>
		<item>
			<title>Реализация появления случайного персонажа при нажатии</title>
			<link>https://gcup.ru/forum/59-104169-1</link>
			<pubDate>Tue, 14 Nov 2023 09:03:30 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: JamesKingston&lt;br /&gt;Автор последнего сообщения: TLT&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Доброго времени суток!&lt;br /&gt;Нужна помощь в реализации следующего момента. Я хотел бы сделать так, чтобы на сцене появлялась кнопка, при нажатии на которую она убираться, но появлялся случайный персонаж и с ним вместе появлялось бы еще кнопка, при нажатии на которую он бы исчезал и та пeрвая кнопка появлялась бы заново.&lt;br /&gt;Буду очень рад вашей помощи.</content:encoded>
			<category>Unity</category>
			<dc:creator>JamesKingston</dc:creator>
			<guid>https://gcup.ru/forum/59-104169-1</guid>
		</item>
		<item>
			<title>массив из текстового файла</title>
			<link>https://gcup.ru/forum/59-104164-1</link>
			<pubDate>Fri, 10 Nov 2023 00:24:31 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: peltat&lt;br /&gt;Автор последнего сообщения: JackNazaryan&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Всем привет!Нужна ваша помощь.Есть массив string[] а, в него нужно запихнуть кучу слов, руками оч долго. Хотелось бы заполнить этот массив из текстового файла. Так вот, есть ли такой способ, если есть, подскажите пожалуйста как это сделать</content:encoded>
			<category>Unity</category>
			<dc:creator>peltat</dc:creator>
			<guid>https://gcup.ru/forum/59-104164-1</guid>
		</item>
		<item>
			<title>Остановка музыки Unity</title>
			<link>https://gcup.ru/forum/59-104165-1</link>
			<pubDate>Thu, 09 Nov 2023 09:50:28 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: Meerkat_GG&lt;br /&gt;Автор последнего сообщения: Meerkat_GG&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Нужен код для остановки музыкальной дорожки. С первой сцены играет дорожка через DontDestroyOnLoad. Через несколько сцен нужно ее остановить. Что нужно добавить в код?&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;using System.Collections;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using UnityEngine;&lt;br /&gt; &lt;br /&gt;public class BGMusic : MonoBehaviour&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static BGMusic instance;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void Awake(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (instance != null&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Destroy(gameObject&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;instance = this;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DontDestroyOnLoad(this.gameObject&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;</content:encoded>
			<category>Unity</category>
			<dc:creator>Meerkat_GG</dc:creator>
			<guid>https://gcup.ru/forum/59-104165-1</guid>
		</item>
		<item>
			<title>Музыка Unity</title>
			<link>https://gcup.ru/forum/59-104163-1</link>
			<pubDate>Wed, 08 Nov 2023 02:55:21 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: Meerkat_GG&lt;br /&gt;Автор последнего сообщения: Meerkat_GG&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Приветствую. С первой сцены проекта для непрерывного воспроизведения музыки для следующих сцен, использую DontDestroyOnLoad. &lt;br /&gt;Вопрос: Как с определенной сцены отключить эту дорожку и запустить новую, так же с DontDestroyOnLoad?&lt;br /&gt;Условно, выглядеть должно так: первые 5 сцен одна аудио дорожка. Во время перехода с 5 на 6 сцену начинается другая дорожка, тоже непрерывная. Естественно без наложения. Спасибо.</content:encoded>
			<category>Unity</category>
			<dc:creator>Meerkat_GG</dc:creator>
			<guid>https://gcup.ru/forum/59-104163-1</guid>
		</item>
		<item>
			<title>Сохранение/загрузка сцены в Unity</title>
			<link>https://gcup.ru/forum/59-104162-1</link>
			<pubDate>Wed, 08 Nov 2023 02:26:47 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: Meerkat_GG&lt;br /&gt;Автор последнего сообщения: JackNazaryan&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Приветствую. Проект - текстовый квест. Каждая страница - новая сцена. Первая сцена - главное меню. Как реализовать сохранение прогресса через кнопку? Условно, на 20 сцене нажимаем &quot;сохранить&quot;, а после перезахода в игру, в главном меню через кнопку &quot;загрузить&quot; попадаем на сохраненную сцену? Пожалуйста, объясните подробнее алгоритм действий, недавно в с#. Спасибо.&lt;br /&gt;На эту тему находил сохранение прогресса только на конкретной сцене, типа положение персонажа, инвентарь и т.д. Отсюда и вопрос.</content:encoded>
			<category>Unity</category>
			<dc:creator>Meerkat_GG</dc:creator>
			<guid>https://gcup.ru/forum/59-104162-1</guid>
		</item>
		<item>
			<title>Дочерняя система частиц не следует за родительской</title>
			<link>https://gcup.ru/forum/59-104158-1</link>
			<pubDate>Thu, 02 Nov 2023 17:49:23 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: Jlexa123&lt;br /&gt;Автор последнего сообщения: Jlexa123&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Как сделать, чтобы дочерняя система частиц следовала за родительской? Мне нужно что-то вроде блуждающего огонька, нужно чтобы одна частица более яркая следовала по определенной траектории, а вторая более блеклая дочерняя частица всегда находилась в центре родительской частицы. Я создал одну систему частиц, затем другую со скоростью 0, добавил ее в первую. Первая через саб эмитер запускает вторую и частица все время остается на одном месте, вместо того, чтобы следовать за родительской частицей.&lt;br /&gt;&lt;br /&gt;Мне казалось что раньше оно всегда так и работало, но почему-то сейчас дочерние частицы ведут себя так, как буд-то у них simulation space world стоит все время. Дочерняя частица остается на месте а родительская улетает. Версия unity 2022.3.11f1&lt;br /&gt;&lt;br /&gt;&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerRZZPbQ&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerRZZPbQ&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerRZZPbQ&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerRZZPbQ&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerRZZPbQ&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerRZZPbQ&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerRZZPbQ&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerRZZPbQ&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerRZZPbQ&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;&lt;img src=&quot;https://imgur.com/YrTClz4.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Unity</category>
			<dc:creator>Jlexa123</dc:creator>
			<guid>https://gcup.ru/forum/59-104158-1</guid>
		</item>
		<item>
			<title>Анимация в Unreal Engine 5 не получается</title>
			<link>https://gcup.ru/forum/60-104156-1</link>
			<pubDate>Thu, 02 Nov 2023 13:51:09 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/60&quot;&gt;Unreal Engine&lt;/a&gt;&lt;br /&gt;Описание темы: Помогите с анимацией&lt;br /&gt;Автор темы: Damon&lt;br /&gt;Автор последнего сообщения: Damon&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Доброго времени суток.&lt;br /&gt;Я совсем новичок в UE5. Работаю на управлением персонажа. С передвижением во все стороны и бегом разобрался и реализовал. Начал создавать прыжок. Делаю его с разными режимами. Прыжок с места, прыжок с шага, прыжок с бега и реализован Джетпак.&lt;br /&gt;Механически все работает исправно (ходит, бегает, прыгает и летает), а вот с анимациями беда.&lt;br /&gt;Вот вопрос в чем. У меня два вида анимации приземления (на скрине &lt;b&gt;EndJump&lt;/b&gt; и &lt;b&gt;EndJetPack&lt;/b&gt;). Возвращение в &lt;b&gt;Walk/Run&lt;/b&gt; сделано через &lt;b&gt;ToLand&lt;/b&gt; и в ней стоят галочки на &lt;b&gt;EndJump&lt;/b&gt; и &lt;b&gt;EndJetPack&lt;/b&gt;. Переменные используются &quot;&lt;b&gt;проверка скорости&lt;/b&gt;, &lt;b&gt;я в воздухе&lt;/b&gt;, &lt;b&gt;я лечу&lt;/b&gt; и &lt;b&gt;направление&lt;/b&gt;&quot; . Если сделано как на скрине и &lt;b&gt;ToLand&lt;/b&gt; соединено с &lt;b&gt;Walk/Run&lt;/b&gt; с переменной (&quot;&lt;b&gt;я воздухе&lt;/b&gt;&quot; - нет), то анимации приземления нет. Вот в чем вопрос как мне завершить цикл чтобы была анимация приземления и цикл возвращался к движению по земле. Помогите или направьте в нужное русло.&lt;br /&gt;Если для разъяснения требуется доп/информация, то напишу.&lt;br /&gt;&lt;br /&gt;&lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://imgur.com/a/lfT2RD9&quot; title=&quot;https://imgur.com/a/lfT2RD9&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Скрин&lt;/a&gt;</content:encoded>
			<category>Unreal Engine</category>
			<dc:creator>Damon</dc:creator>
			<guid>https://gcup.ru/forum/60-104156-1</guid>
		</item>
		<item>
			<title>Dagor Engine</title>
			<link>https://gcup.ru/forum/46-9027-1</link>
			<pubDate>Wed, 01 Nov 2023 16:03:05 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/46&quot;&gt;3D движки для разработки игр&lt;/a&gt;&lt;br /&gt;Описание темы: Универсальный движок от отечественных разработчиков&lt;br /&gt;Автор темы: MiniTiv&lt;br /&gt;Автор последнего сообщения: TLT&lt;br /&gt;Количество ответов: 9</description>
			<content:encoded>&lt;b&gt;Dagor Engine&lt;/b&gt; - комплексная технология, предназначенная для создания мультиплатформенных игровых проектов с высокими требованиями к качеству. Dagor Engine — это полноценный игровой движок, подходящий для создания игр в любых жанрах, со всеми необходимыми подсистемами (графическое ядро, физика, анимации, скриптовые языки, звук). Технологии реализованы с расчётом на создание самых различных проектов. Архитектура рассчитана на возможности последнего поколения платформ и реализует передовые технологии. При этом не забыто и current-gen hardware. &lt;p&gt; Кроме игрового движка, Dagor Engine представляет собой полнофункциональное middleware-решение, с развитым инструментарием для создания и редактирования игрового контента (уровней, освещения, спецэффектов, физических объектов, анимации и др.). Для лучшей работы существует поддержка основных 3D-пакетов. &lt;p&gt; &lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.dagor.ru/files/ss/shot48.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt;&lt;img src=&quot;http://www.dagor.ru/files/ss/shot49.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt;&lt;/div&gt; &lt;p&gt; На Dagor Engine вышло 6 игр и создаётся множество новых (в том числе и обладатель двух КРИ Awards — Flight of Fancy); он успешно лицензирован уже несколькими разработчиками. &lt;p&gt; Ключевые возможности Dagor Engine: &lt;br /&gt; Render: HDRI, GI, Full dynamic lighting, Shaders 2.0, Post Effects, Special FX, Animation Management; &lt;br /&gt; Physics: ragdoll, destructable joints, stack of objects, vehicles; &lt;br /&gt; Sound system: built-in FMOD sound system; &lt;br /&gt; Scene Management: Асинхронная подгрузка, LOD, Occluders; &lt;br /&gt; Script system: Squirrel (объектно-ориентированный скрипт с C/C++-подобным синтаксисом), LUA; &lt;br /&gt; Dagor Toolset: Dagor Editor (редактор уровней), Resource Editor, Light Tools, 3ds Max Plugin, Maya Plugin. &lt;p&gt; &lt;b&gt;&lt;u&gt;Полный список возможностей:&lt;/u&gt;&lt;/b&gt; &lt;p&gt; ATI registered developer: Gaijin Entertainment является зарегистрированным ATI партнером. Это помогает сделать Dagor Engine более совместимым с видеокартами ATI Technologies Inc. &lt;p&gt; 3 version and 5 years of development: Dagor Engine разрабатывался начиная с 2001 года, будучи с самого начала ориентированным на разработку самых различных по жанру игр. С тех пор технологию лицензировали несколько разработчиков, вышла уже третья версия движка. Уже продаются четыре игры на технологии Dagor Engine и разрабатывается еще более восьми. &lt;p&gt; Award wining: на технологии Dagor Engine разрабатывается Полет фантазии, получивший две престижные награды на КРИ 2003. &lt;p&gt; &lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://minitiv2008.3dn.ru/ava/shot27.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt;&lt;/div&gt; &lt;p&gt; &lt;b&gt;&lt;u&gt;Страна происхождения:&lt;/u&gt;&lt;/b&gt; &lt;span style=&quot;font-size:13pt;&quot;&gt;РОССИЯ&lt;/span&gt; &lt;img src=&quot;http://s12.ucoz.net/sm/1/eek.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;eek&quot;&gt; &lt;img src=&quot;http://s12.ucoz.net/sm/1/shock.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;shock&quot;&gt; &lt;img src=&quot;http://s12.ucoz.net/sm/1/respect.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;respect&quot;&gt; &lt;p&gt; &lt;b&gt;&lt;u&gt;Сайт разработчика:&lt;/u&gt;&lt;/b&gt; &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?http://www.dagor.ru/&quot; title=&quot;http://www.dagor.ru/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.dagor.ru/&lt;/a&gt; &lt;p&gt; &lt;div align=&quot;center&quot;&gt;&lt;i&gt;Немного скринов из игр на данном двигло&lt;/i&gt;&lt;/div&gt; &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoiler6wpjiR&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoiler6wpjiR&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler6wpjiR&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler6wpjiR&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoiler6wpjiR&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoiler6wpjiR&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler6wpjiR&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoiler6wpjiR&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoiler6wpjiR&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt; &lt;img src=&quot;http://www.dagor.ru/files/ss/shot52.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt; &lt;br /&gt; &lt;img src=&quot;http://www.dagor.ru/files/ss/shot50.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt; &lt;br /&gt; &lt;img src=&quot;http://www.dagor.ru/files/ss/shot47.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt; &lt;br /&gt; &lt;img src=&quot;http://www.dagor.ru/files/ss/shot44.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt; &lt;br /&gt; &lt;img src=&quot;http://www.dagor.ru/files/ss/shot42.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt; &lt;br /&gt; &lt;img src=&quot;http://www.dagor.ru/files/ss/shot43.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt; &lt;br /&gt; &lt;img src=&quot;http://www.dagor.ru/files/ss/shot01.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt; &lt;br /&gt; &lt;img src=&quot;http://www.dagor.ru/files/ss/shot36.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt; &lt;br /&gt; &lt;img src=&quot;http://www.dagor.ru/files/ss/shot39.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt; &lt;br /&gt; &lt;img src=&quot;http://www.dagor.ru/files/ss/shot41.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>3D движки для разработки игр</category>
			<dc:creator>MiniTiv</dc:creator>
			<guid>https://gcup.ru/forum/46-9027-1</guid>
		</item>
		<item>
			<title>Как собрать HTML5 проект для Android?</title>
			<link>https://gcup.ru/forum/87-104149-1</link>
			<pubDate>Tue, 24 Oct 2023 19:34:18 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/87&quot;&gt;Разработка мобильных игр&lt;/a&gt;&lt;br /&gt;Описание темы: Нужен совет&lt;br /&gt;Автор темы: Linka&lt;br /&gt;Автор последнего сообщения: Linka&lt;br /&gt;Количество ответов: 3</description>
			<content:encoded>Подскажите как быстро и без головной боли собрать HTML5 проект для Android? В сети полно инструкций как это сделать с Android Studio, но тот сильно обновился с тех пор и там же тупо нет таких пунктов, как в видео-инструкция, типа выбрать Java в списке, найти такой-то файл и пр. Также он у меня не может что-то из интернета найти или что-то крутит, крутит непонятное с библиотеками… Короче, не понятно.&lt;br /&gt;Также в сети есть онлайн сервисы, но все они либо устарели, либо внедряют в проект свою рекламу. Есть ли рабочий вариант?</content:encoded>
			<category>Разработка мобильных игр</category>
			<dc:creator>Linka</dc:creator>
			<guid>https://gcup.ru/forum/87-104149-1</guid>
		</item>
		<item>
			<title>Blender &amp; BGE [Вопрос - ответ]</title>
			<link>https://gcup.ru/forum/49-46733-1</link>
			<pubDate>Sun, 22 Oct 2023 09:43:30 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/49&quot;&gt;Blender и BGE&lt;/a&gt;&lt;br /&gt;Описание темы: Задаем вопросы по  Blender и BGE - получаем ответы.&lt;br /&gt;Автор темы: Alfe&lt;br /&gt;Автор последнего сообщения: Moorven&lt;br /&gt;Количество ответов: 79</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size:14pt;&quot;&gt;Blender &amp; BGE [Вопрос - ответ]&lt;/span&gt;&lt;/b&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class=&quot;link&quot; href=&quot;http://gcup.ru/forum/49-43443&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Уроки по Blender и не только&lt;/a&gt;</content:encoded>
			<category>Blender и BGE</category>
			<dc:creator>Alfe</dc:creator>
			<guid>https://gcup.ru/forum/49-46733-1</guid>
		</item>
		<item>
			<title>Проблема с импортом модели</title>
			<link>https://gcup.ru/forum/59-104146-1</link>
			<pubDate>Wed, 18 Oct 2023 13:14:48 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Описание темы: Искажение модели при импорте с morphing&lt;br /&gt;Автор темы: knopak&lt;br /&gt;Автор последнего сообщения: knopak&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Добрый день! Импортирую в unity с анимацией морфинга. При моргании искажается некоторые участки лица. Причем на модели есть анимация поднимания бровей, с ней все хорошо, а именно при моргании такой глюк. Без морфинга все в норме. В чем может быть дело? В геометрии модели или в настройках импорта?&lt;br /&gt;сделала наглядную гифку https://prnt.sc/SCCMQKG_Fkke</content:encoded>
			<category>Unity</category>
			<dc:creator>knopak</dc:creator>
			<guid>https://gcup.ru/forum/59-104146-1</guid>
		</item>
		<item>
			<title>Ищу скрипты оригинального Бойцовского Клуба</title>
			<link>https://gcup.ru/forum/51-104134-1</link>
			<pubDate>Mon, 18 Sep 2023 12:41:19 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/51&quot;&gt;Движки для браузерных игр&lt;/a&gt;&lt;br /&gt;Автор темы: schedlock&lt;br /&gt;Автор последнего сообщения: schedlock&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Добрый день,&lt;br /&gt;&lt;br /&gt;Ищу скрипты оригинального Бойцовского Клуба combats.ru/combats.com (можно не самой первой свежести). &lt;br /&gt;&lt;br /&gt;Для образовательных целей.&lt;br /&gt;&lt;br /&gt;Прошу скрипты клонов не предлагать.&lt;br /&gt;&lt;br /&gt;Заранее благодарен за ответ.</content:encoded>
			<category>Движки для браузерных игр</category>
			<dc:creator>schedlock</dc:creator>
			<guid>https://gcup.ru/forum/51-104134-1</guid>
		</item>
		<item>
			<title>Torgue 3D!</title>
			<link>https://gcup.ru/forum/46-2178-1</link>
			<pubDate>Mon, 28 Aug 2023 09:59:56 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/46&quot;&gt;3D движки для разработки игр&lt;/a&gt;&lt;br /&gt;Описание темы: Какой же он на самом деле...&lt;br /&gt;Автор темы: MiniTiv&lt;br /&gt;Автор последнего сообщения: graveman&lt;br /&gt;Количество ответов: 57</description>
			<content:encoded>&lt;b&gt;П&lt;/b&gt;риветствую вас, уважаемые игроделы! Создал эту тему по нужде и думаю то что я скажу удивит всех! &lt;br /&gt; Итак, изначально скажу что &lt;a class=&quot;link&quot; href=&quot;http://www.gcup.ru/load/igrovye_dvizhki/torque_3d/3-1-0-597&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Torgue 3D&lt;/a&gt; отличный движок и он подойдёт даже начинающим! Есть прекрасный ф-ции и на нём можно реализовать практически все задуманные проекты! Всё что нужно как говорится при нём. &lt;br /&gt; &lt;b&gt;Н&lt;/b&gt;а первый взгляд этот движок показался мне очень и очень хорошим! Интерфейс в нём - просто сказка. Работает по принципу &quot;Всё в одном&quot;. Гибкая настройка, лёгкость в освоении, казалось и сборщик игр и инстал и готовый мультиплеер! &lt;br /&gt; Но так случилось что никто не уловил 1-го очень важного момента в &lt;span style=&quot;color:red&quot;&gt;демо-версии&lt;/span&gt;, а это то, что на карту нельзя ставить более 32-х объектов, к этому выводу мы пришли с &lt;b&gt;Untion&apos;ом&lt;/b&gt;, юзая у удивляясь его простотой!!! &lt;br /&gt; &lt;b&gt;Т&lt;/b&gt;ак что такая-во душераздирающая ситуация! Ну из минусов можно ещё подчеркнуть то, что высвечивается окно по типу &quot;Купите вы всётаки полную версию, а?&quot;, но любые минусы думаю ни что по сравнению с этой проблемой! &lt;br /&gt; &lt;u&gt;Кого интересует этот движок, давайте попробуем разобраться с этим&lt;/u&gt;, или может это я что-то не так понял в этой проблеме, хотел бы услышать ваше мнение! Может получится что-нить вытрясти ещё из демки... &lt;br /&gt; &lt;b&gt;К&lt;/b&gt;онечно можно попробовать скреплять все модели под общую гребёнку какие можно, к примеру соединить 5 зданий через промежуток в 1 объект, ну это как 1 из вариантов. Что бы предложили вы? Я можно сказать очень расстроился по этому поводу &lt;img src=&quot;http://s12.ucoz.net/sm/1/sad.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;sad&quot;&gt;</content:encoded>
			<category>3D движки для разработки игр</category>
			<dc:creator>MiniTiv</dc:creator>
			<guid>https://gcup.ru/forum/46-2178-1</guid>
		</item>
		<item>
			<title>Рейкаст от объекта к объекту</title>
			<link>https://gcup.ru/forum/59-78184-1</link>
			<pubDate>Tue, 15 Aug 2023 21:50:07 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: Valik_Fenko&lt;br /&gt;Автор последнего сообщения: mihailsh&lt;br /&gt;Количество ответов: 4</description>
			<content:encoded>Вроде проще быть не может,но что-то у меня не выходит...Нужно провести рейкаст от врага до игрока и если на пути ниче нету то нападаем(ну пока так).Но чет ниче не вышло =(.&lt;br /&gt;Как это сделать?Запустить рейкаст от позиции врага(каждого),до позиции игрока?&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;if(Physics.Linecast(transform.position,player.transform.position,out hit&amp;#41;&amp;#41;&lt;br /&gt;{&lt;br /&gt;if(hit.collider.tag == &quot;Player&quot;&amp;#41;&lt;br /&gt;{&lt;br /&gt;IsAgro = true;&lt;br /&gt;}&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Этот код не работает =(&lt;br /&gt;&lt;br /&gt;Луч пускает под ноги вражине...как так то?&lt;br /&gt;&lt;br /&gt;Решено!Есть новая проблема!Как мне найти прародителя этого обьекта?.Скажем этот обьект глаза варага а двигать мне надо его самого,нид пройтись по иерархии и найти обьект без родителя..&lt;br /&gt;&lt;br /&gt;Пробовал так&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;Transform pParent;&lt;br /&gt;for(int i = 0;i&lt;10;i++&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(pParent.transform.parent!=null&amp;#41; pParent = pParent.transform.parent;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Че он ругается когда я пишу Transform pParent = transform;</content:encoded>
			<category>Unity</category>
			<dc:creator>Valik_Fenko</dc:creator>
			<guid>https://gcup.ru/forum/59-78184-1</guid>
		</item>
		<item>
			<title>Здравствуйте, посоветуйте пожалуйста движок для сюжетных 2D</title>
			<link>https://gcup.ru/forum/45-100904-1</link>
			<pubDate>Tue, 08 Aug 2023 16:16:13 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/45&quot;&gt;2D-движки для создания игр&lt;/a&gt;&lt;br /&gt;Описание темы: Ищу хороший движок для создания игры по одному ранобэ&lt;br /&gt;Автор темы: denis_default&lt;br /&gt;Автор последнего сообщения: raf_gal&lt;br /&gt;Количество ответов: 8</description>
			<content:encoded>Уважаемые игроделы, недавно столкнулся с чувством того, что уж очень хочется создать собственную игру (ну как недавно, уже 5 месяцев назад, но до сих пор очень влечёт). В общем, я очень долго думал над сюжетом, что-то додумал, научился JS, но есть одна проблема - у меня нету какого-то конструктора для создания игры. Потратил кучу времени на поиск хорошего конструктора и нашёл RPG Maker, но его проблема в том, что он является платным. Для среднестатистического школьника как я, 39$ накопить будет тяжеловато, поэтому я начал поиски бесплатного обеспечения. И вот теперь я пишу это на форум и прошу у вас помощи, пожалуйста посоветуйте несколько бесплатных 2D конструкторов. Заранее большое вам спасибо.</content:encoded>
			<category>2D-движки для создания игр</category>
			<dc:creator>denis_default</dc:creator>
			<guid>https://gcup.ru/forum/45-100904-1</guid>
		</item>
		<item>
			<title>Ищу движок для создания он-лайн игры.</title>
			<link>https://gcup.ru/forum/50-32942-1</link>
			<pubDate>Tue, 08 Aug 2023 16:14:06 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/50&quot;&gt;Движки для разработки OnLine игр&lt;/a&gt;&lt;br /&gt;Описание темы: Что? Под кат.&lt;br /&gt;Автор темы: TreeLoys&lt;br /&gt;Автор последнего сообщения: raf_gal&lt;br /&gt;Количество ответов: 9</description>
			<content:encoded>Имеется картинка, мой набросок: &lt;br /&gt; &lt;img src=&quot;http://www.39dll.ru/sites/default/files/images/interfeis_1.1.preview.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt; &lt;br /&gt; Хочу сделать игру про бактерий он-лайн. 2D вид с верху. &lt;br /&gt; Принцип - деление клеток. Потом например из клеток сделать оболочку. &lt;br /&gt; Не желательно но на всякий случай с поддержкой 3D. &lt;br /&gt; Принцип: клиент-сервер. &lt;br /&gt; Легкость освоения: средне &lt;br /&gt; Литература по движку: да(с жертвой 3D допустимо) &lt;br /&gt; Жанр: *** в реальном времени</content:encoded>
			<category>Движки для разработки OnLine игр</category>
			<dc:creator>TreeLoys</dc:creator>
			<guid>https://gcup.ru/forum/50-32942-1</guid>
		</item>
		<item>
			<title>На чём и как сделать игру типа Ninja World</title>
			<link>https://gcup.ru/forum/51-103341-1</link>
			<pubDate>Fri, 14 Jul 2023 16:16:53 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/51&quot;&gt;Движки для браузерных игр&lt;/a&gt;&lt;br /&gt;Описание темы: Помогите те кто шарит&lt;br /&gt;Автор темы: Nikooola&lt;br /&gt;Автор последнего сообщения: ryanjones&lt;br /&gt;Количество ответов: 8</description>
			<content:encoded>Всем привет. Я впервые нахожусь на такой штуке как форум, и вот недавно решил понять как же создать свою собственную игру. В программировании я даже не любитель, я просто новичок, но готов учиться, именно поэтому я здесь. У меня есть идея браузерной онлайн игры, и хочу свою идею реализовать в реальности. Готов учиться упорно и очень долго, но чтобы игра получилась действительно качественной. Первый вопрос который меня сразу же беспокоит состоит в том, что я не знаю на каком движке нужно создавать ту игру которую я собираюсь создать. Как пример могу привести такую игру как Ninja World, если кто-то не знает можете загуглить. Это браузерная онлайн RPG, с множеством серверов. Хочу свою игру создать в похожей стилистике и гемплеем, тоже про аниме, но не про Наруто. Скажите пожалуйста кто в этой теме долго вариться и понимает детали, на каком движке создаются подобные игры и есть ли возможность создать такую игру одному если обучиться программированию? Спасибо всем кто откликнется.</content:encoded>
			<category>Движки для браузерных игр</category>
			<dc:creator>Nikooola</dc:creator>
			<guid>https://gcup.ru/forum/51-103341-1</guid>
		</item>
		<item>
			<title>Простая змейка на Bevy</title>
			<link>https://gcup.ru/forum/3-104081-1</link>
			<pubDate>Fri, 30 Jun 2023 21:33:37 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/3&quot;&gt;Общее обсуждение Игровых движков&lt;/a&gt;&lt;br /&gt;Описание темы: Змейка на ECS логике + простое меню&lt;br /&gt;Автор темы: minecrafter2&lt;br /&gt;Автор последнего сообщения: minecrafter2&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Bevy молодой игровой движок общего назначения который предоставляет ECS логику для создания игровых сценариев. Основное отличие от ООП подхода как раз в отсутствии самого понятия &quot;объект&quot;, вместо работает структура из &lt;u&gt;E&lt;/u&gt;ntity (сущности) &lt;u&gt;C&lt;/u&gt;omponent (компоненты) и &lt;u&gt;S&lt;/u&gt;ystems (системы) (а так же ещё Resources, но их в аббревиатуру по какой-то причине не включают). Так же стоит отметить что ECS не ноу-хау Bevy, а в общем-то довольно известная технология. К примеру года 3 назад Unity предприняла попытку создать альтернативную логику движка на ECS.&lt;br /&gt;&lt;br /&gt;Так что же, перейдём к змейке. И самое главное забываем про стандартный ООП подход и стараемся переключится на ECS логику (по началу может быть очень сложно).&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Для начала настройки рабочего окружения.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Добавляем Bevy к проекту:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;cargo add bevy&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Так как вы уже должны быть минимально знакомы с Rust&apos;ом вы знаете какие у него долгие компиляция так что необходимо добавить пару оптимизаций что бы в результате наш .toml файл выглядел так:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;// ...&lt;br /&gt;&amp;#91;dependencies]&lt;br /&gt;bevy = &quot;0.10.1&quot;&lt;br /&gt;rand = &quot;0.8.5&quot;&lt;br /&gt;&lt;br /&gt;&amp;#91;profile.dev]&lt;br /&gt;opt-level = 1&lt;br /&gt;&lt;br /&gt;&amp;#91;profile.dev.package.&quot;*&quot;]&lt;br /&gt;opt-level = 3&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;И так же включить доп. функцию динамического линкера что бы наша конфигурация запуска выглядела таким образом:&lt;br /&gt;&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerDzOOTS&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerDzOOTS&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerDzOOTS&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerDzOOTS&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerDzOOTS&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerDzOOTS&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerDzOOTS&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerDzOOTS&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerDzOOTS&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;&lt;img src=&quot;https://cdn.imgchest.com/files/j7mmcorr3p7.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;&lt;br /&gt;&lt;br /&gt;После таких настроек нажимаем кнопку build и ждём компиляции. Имейте ввиду это может занять довольно приличное время (около 10 -+3 минут). Зато последующие запуски проекта будут в течении нескольких секунд.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Базовая настройка приложения&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Для использования базовых функци движка необходимо использовать указать:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;use bevy::prelude::*;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Остальные же импорты сама IDE предложит.&lt;br /&gt;&lt;br /&gt;Самый корень Bevy приложения это App. С помощью которого мы добавляем Системы. Системы это обычные функции Rust. Давайте добавить встроенную системы close_on_esc что по нажатию на соответствующую клавишу игра закрывалась. Код будет выглядеть так:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;use bevy::prelude::*;&lt;br /&gt;&lt;br /&gt;fn main(&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;App::new(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_plugins(DefaultPlugins.set(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WindowPlugin {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primary_window: Some(Window {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;title: String::from(&quot;Bevy Tutorial&quot;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_system(bevy::window::close_on_esc&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.run(&amp;#41;&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Системы выполняются каждый кадр приложения. Но есть ещё отдельный вид систем которые исполняют себя только один раз при создании приложения. С помощью таким систем можно создать камеру через которую будет видно игровое поле.&lt;br /&gt;&lt;br /&gt;Для этого сначало создадим новую систему:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;fn spawn_camera(mut commands: Commands&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;commands.spawn(Camera2dBundle::default(&amp;#41;&amp;#41;;&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;и добавим её:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;.add_startup_system(spawn_camera&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;В качестве параметров системе принимает Commands - инструмент для работы с сущностями (удаление, создание). Обратите внимание, при добавлении системы передавать аргументы не надо! Bevy решит это самостоятельно какие параметры системе нужны.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Структура змейки&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;#&amp;#91;derive(Resource&amp;#41;]&lt;br /&gt;struct Snake(VecDeque&lt;Entity&gt;&amp;#41;;&lt;br /&gt;&lt;br /&gt;impl Default for Snake {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fn default(&amp;#41; -&gt; Self {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Self(VecDeque::new(&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&amp;#91;derive(Resource&amp;#41;]&lt;br /&gt;struct SnakeDirection(Direction&amp;#41;;&lt;br /&gt;&lt;br /&gt;impl Default for SnakeDirection {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fn default(&amp;#41; -&gt; Self {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Self(Direction::Right&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;enum Direction {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Up,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Down,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Left,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Right,&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&amp;#91;derive(Component&amp;#41;]&lt;br /&gt;struct SnakeSegment;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Для змейки нам необходим ресурс (глобально доступная структура) которая будет хранить вектор с id сущностей змейки. Так же необходим компонент SnakeSegment для маркировки сущностей принадлежностью к змейке и направление змейки. Так же не забываем имплементацию &quot;по умолчанию&quot; для того что бы инициализировать ресурс.&lt;br /&gt;&lt;br /&gt;Инициализация ресурсов происходит так: (в App)&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;.init_resource::&lt;Snake&gt;(&amp;#41;&lt;br /&gt;.init_resource::&lt;SnakeDirection&gt;(&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Спавн начальной змейки&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;fn spawn_default_snake(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut commands: Commands,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut snake: ResMut&lt;Snake&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;asset_server: Res&lt;AssetServer&gt;,&lt;br /&gt;&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let default_snake = &amp;&amp;#91;(0., 0.&amp;#41;, (42., 0.&amp;#41;, (84., 0.&amp;#41;];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (segment_x, segment_y&amp;#41; in default_snake {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake.0.push_back(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;commands&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.spawn((&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SpriteBundle {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transform: Transform::from_xyz(*segment_x, *segment_y, 0.&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture: asset_server.load(&quot;images/snake_segment.png&quot;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SnakeSegment,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.id(&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;В качестве параметров ресурс берёт Commands для спавна сущности змейки, ресурс змейки и вектором (обязательно mut, нам его менять надо), и сервер по загрузки ассетов. Помимо спавна спрайта, добавляем ещё SnakeSegment, теперь сущности можно легко найти по фильтру этого компонента. Добавляем системы как стартовую.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Движение змейки&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;fn snake_movement(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut commands: Commands,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut snake: ResMut&lt;Snake&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_query: Query&lt;&amp;Transform, With&lt;SnakeSegment&gt;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_direction: Res&lt;SnakeDirection&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;asset_server: Res&lt;AssetServer&gt;,&lt;br /&gt;&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;commands.entity(*snake.0.front(&amp;#41;.unwrap(&amp;#41;&amp;#41;.despawn(&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake.0.pop_front(&amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let snake_head = snake_query.iter(&amp;#41;.last(&amp;#41;.unwrap(&amp;#41;.translation;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let (offset_x, offset_y&amp;#41; = match snake_direction.0 {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Direction::Up =&gt; (0., 42.&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Direction::Down =&gt; (0., -42.&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Direction::Left =&gt; (-42., 0.&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Direction::Right =&gt; (42., 0.&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake.0.push_back(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;commands&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.spawn((&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SpriteBundle {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transform: Transform::from_xyz(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_head.x + offset_x,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_head.y + offset_y,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture: asset_server.load(&quot;images/snake_segment.png&quot;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SnakeSegment,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.id(&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;;&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Тут логика игры стандартная - удаляем хвост добавляем спереди и так движемся по направлению. У данной системы есть очень важный параметр - запрос (Query). С помощью запросов можно легко найти все необходимые элементы с необходимыми компонентами. Это ключевая функция Bevy и ECS системы.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Ввод с клавиатуры&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;fn snake_direction_input(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut snake_direction: ResMut&lt;SnakeDirection&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;keyboard: Res&lt;Input&lt;KeyCode&gt;&gt;,&lt;br /&gt;&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if keyboard.just_pressed(KeyCode::Up&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_direction.0 = Direction::Up&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if keyboard.just_pressed(KeyCode::Down&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_direction.0 = Direction::Down&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if keyboard.just_pressed(KeyCode::Left&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_direction.0 = Direction::Left&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if keyboard.just_pressed(KeyCode::Right&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_direction.0 = Direction::Right&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Bevy использует ввод с клавиатуры как Ресурс, так что просто добавляем ресурс к системы и можем слушать клавиатуру.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Рост змейки&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;fn snake_growth_event_handler(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut commands: Commands,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut snake: ResMut&lt;Snake&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut snake_growth_event_reader: EventReader&lt;SnakeGrowthEvent&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_direction: Res&lt;SnakeDirection&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_query: Query&lt;&amp;Transform, With&lt;SnakeSegment&gt;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;asset_server: Res&lt;AssetServer&gt;,&lt;br /&gt;&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for _ in snake_growth_event_reader.iter(&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let snake_head = snake_query.iter(&amp;#41;.last(&amp;#41;.unwrap(&amp;#41;.translation;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let (offset_x, offset_y&amp;#41; = match snake_direction.0 {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Direction::Up =&gt; (0., 42.&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Direction::Down =&gt; (0., -42.&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Direction::Left =&gt; (-42., 0.&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Direction::Right =&gt; (42., 0.&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake.0.push_back(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;commands&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.spawn((&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SpriteBundle {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transform: Transform::from_xyz(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_head.x + offset_x,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_head.y + offset_y,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture: asset_server.load(&quot;images/snake_segment.png&quot;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SnakeSegment,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.id(&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;println!(&quot;snake_growth_event_handler&quot;&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Для создания системы роста змейки будем использовать ещё одну функцию Bevy - события (Event). События может отправить любая система и принять так же любая система кто имеет соотвествующий параметр.&lt;br /&gt;&lt;br /&gt;Создаём пустую структуру и добавляем её как событие:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;.add_event::&lt;SnakeGrowthEvent&gt;(&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Спавн еды&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Для начала нам нужно создать еду по умолчанию:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;fn spawn_default_food(mut commands: Commands, asset_server: Res&lt;AssetServer&gt;&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let x = rand::thread_rng(&amp;#41;.gen_range(-7..=7&amp;#41; as f32;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let y = rand::thread_rng(&amp;#41;.gen_range(-7..=7&amp;#41; as f32;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;commands.spawn((&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SpriteBundle {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transform: Transform::from_xyz(x * SEGMENT_SIZE, y * SEGMENT_SIZE, 0.&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture: asset_server.load(&quot;images/food.png&quot;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Food,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&amp;#41;;&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Добавим эту сисему как стартовую&lt;br /&gt;&lt;br /&gt;И по такой же логике проверяем столкновение головы змейки с едой:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;fn snake_eat_food(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut commands: Commands,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut snake_growth_event_writer: EventWriter&lt;SnakeGrowthEvent&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;food_query: Query&lt;(Entity, &amp;Transform&amp;#41;, With&lt;Food&gt;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_query: Query&lt;&amp;Transform, With&lt;SnakeSegment&gt;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;asset_server: Res&lt;AssetServer&gt;,&lt;br /&gt;&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let snake_head = snake_query.iter(&amp;#41;.last(&amp;#41;.unwrap(&amp;#41;.translation;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;food_query.for_each(|food| {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if snake_head == food.1.translation {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;commands.entity(food.0&amp;#41;.despawn(&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_growth_event_writer.send(SnakeGrowthEvent&amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let x = rand::thread_rng(&amp;#41;.gen_range(-7..=7&amp;#41; as f32;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let y = rand::thread_rng(&amp;#41;.gen_range(-7..=7&amp;#41; as f32;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;commands.spawn((&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SpriteBundle {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transform: Transform::from_xyz(x * SEGMENT_SIZE, y * SEGMENT_SIZE, 0.&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture: asset_server.load(&quot;images/food.png&quot;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Food,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;println!(&quot;Snake Eat Food!&quot;&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;#41;;&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Змейка съела сама себя?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Тут можно применить более хитрый метод чем проверять у каждого сегмента змейки столкновение с головой. Для обработки проигрыша мы просто отфильтруем сегменты змейки и если сегментов с кординатами головы больше 1 то игра завершается.&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;fn game_over(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut app_exit_event_writer: EventWriter&lt;bevy::app::AppExit&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_query: Query&lt;&amp;Transform, With&lt;SnakeSegment&gt;&gt;,&lt;br /&gt;&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let snake_head = snake_query.iter(&amp;#41;.last(&amp;#41;.unwrap(&amp;#41;.translation;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let skip_count = snake_query.iter(&amp;#41;.len(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- snake_query&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.iter(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.filter(|segment| segment.translation != snake_head&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.count(&amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if skip_count &gt; 1 {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;app_exit_event_writer.send(bevy::app::AppExit&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;println!(&quot;Game Over!&quot;&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Настройки порядка работы систем&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;App::new(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_plugins(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DefaultPlugins.set(WindowPlugin {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primary_window: Some(Window {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;title: String::from(&quot;Bevy Snake Game&quot;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resolution: WindowResolution::new(WIDTH * SEGMENT_SIZE, HEIGHT * SEGMENT_SIZE&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.with_scale_factor_override(1.&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.insert_resource(FixedTime::new_from_secs(1. / 10.&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.init_resource::&lt;Snake&gt;(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.init_resource::&lt;SnakeDirection&gt;(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_event::&lt;SnakeGrowthEvent&gt;(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_startup_system(spawn_camera&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_startup_system(spawn_default_snake&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_startup_system(spawn_default_food&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_system(bevy::window::close_on_esc&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_system(snake_direction_input&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_system(snake_growth_event_handler&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_systems(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_movement,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_eat_food.after(snake_movement&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;game_over.after(snake_movement&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.in_schedule(CoreSchedule::FixedUpdate&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.run(&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Для того что бы змейка двигалась не так быстро создадим ресурс с фиксированным временем. Далее вместо поочерёдного добавление систем. Используем функцию добавление пачки систем и объеденим из Schedule. Такой способ позволет настроить порядок запуска систем и как часто они запускаются. В нашем случае необходимо что бы система движение всегда была перед система поедания и проигрыша.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Послесловие&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Ещё хочу обратить внимание что при таком подходе нужно как можно больше разбивать логику работы на мелкие системы, тогда движок будет работать на все сто. Движок очень молодой (ему вот только 3 года), бесплатный, так что специально не обращал внимание на некоторые особенности API так они крайне часто меняются (тут версия 0.10.1). Но как по мне явно перспективный, явно не будет брошен, всё таки 25 тысяч звёзд на гитхабе о чём то говорит (к примеру у libgdx за всё его время существования в почти 13 лет только 21 тысяча).&lt;br /&gt;&lt;br /&gt;&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerCNOc87&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerCNOc87&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerCNOc87&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerCNOc87&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerCNOc87&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerCNOc87&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerCNOc87&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerCNOc87&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerCNOc87&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;&lt;img src=&quot;https://cdn.imgchest.com/files/w7pjczwk9z7.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Добавлено&lt;/b&gt; (29 Июня 2023, 18:04)&lt;br /&gt;---------------------------------------------&lt;br /&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;&lt;span style=&quot;color:red&quot;&gt;Простейший графический интерфейс&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Создание простейшего меню&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Для создания графического интерфейса будем использовать встроенные функции движка Bevy UI. Графический интерфейс ещё достаточно сыроват (на момент версии 0.10.1) и код будет выглядеть достаточно громоздко но в общем полностью выполняет необходимые требования + возможна полная кастомизация внешнего вида.&lt;br /&gt;&lt;br /&gt;Первое что нам понадобиться это дополнительный файл main_menu.rs (или лучше просто menu.rs, так больше подходит стилистике Rust кода)...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Небольшое отступление: структура и организация проекта для Bevy на данный момент это та ещё головная боль, поэтому такое разделение не является самым лучшим, но для небольших проектов вполне себе подойдёт.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;...после создания файла с меню нам нужно подключить файл к основному (к примеру IntelliJ IDEA сама предложит подключение), сделать это так:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;mod main_menu;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Это указывает компилятору видимость данного файла но важно - не само содержимое файла.&lt;br /&gt;&lt;br /&gt;Создадим в main_menu.rs структуру:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;pub struct MainMenuPlugin;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;И указываем возможность его использования в main.rs:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;use crate::main_menu::MainMenuPlugin;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Теперь когда базовая настройка завершена перейдём к логике.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Состояния&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Состояния это обычный enum с перечислением всех возможных вариантов.&lt;br /&gt;&lt;br /&gt;Нам подойдёт такой:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;#&amp;#91;derive(Debug, Default, Clone, Eq, PartialEq, Hash, States&amp;#41;]&lt;br /&gt;enum AppState {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;#91;default]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Menu,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Game,&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Для того что бы Bevy понял что это состояния необходимо указать черту States.&lt;br /&gt;&lt;br /&gt;Вас могут испугать остальной набор атрибутов, но с помощью &quot;cargo check&quot; довольно просто понять какие именно нам необходимы - он сам нам их предложит.&lt;br /&gt;&lt;br /&gt;И добавляем:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;.add_state::&lt;AppState&gt;(&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Условия выполнения систем&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;К сожалению на текущей версии движка 0.10.1 не очень удобно задавать условия выполнения систем.&lt;br /&gt;&lt;br /&gt;Обратите внимание что на скриншоте ниже ошибок нету, но такой способ всё равно работать не будет.&lt;br /&gt;&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerE3F6f6&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerE3F6f6&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerE3F6f6&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerE3F6f6&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerE3F6f6&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerE3F6f6&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerE3F6f6&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerE3F6f6&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerE3F6f6&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;&lt;img src=&quot;https://cdn.imgchest.com/files/345xc62mer7.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;&lt;br /&gt;&lt;br /&gt;Вместо этого нам придётся указать критерий конкретной системе:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_systems(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_movement.run_if(in_state(AppState::Game&amp;#41;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snake_eat_food.after(snake_movement&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;game_over.after(snake_movement&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.in_schedule(CoreSchedule::FixedUpdate&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Это очень неудобно (хотя есть немного другие пути решение такого, но всё равно не очевидные и не удобны), очень надеюсь что в 0.11 это исправят.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Создание плагина&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Плагин в понятии Bevy это просто набор систем вынесенных в отдельное место. (Можно рассматривать как объект с функциями в ООП).&lt;br /&gt;&lt;br /&gt;Реализация плагина:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;pub struct MainMenuPlugin;&lt;br /&gt;&lt;br /&gt;impl Plugin for MainMenuPlugin {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fn build(&amp;self, app: &amp;mut App&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;app&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_startup_system(spawn_main_menu&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.add_system(play_button_interaction&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Так же создадим компоненты...&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;#&amp;#91;derive(Component&amp;#41;]&lt;br /&gt;struct RootNode;&lt;br /&gt;&lt;br /&gt;#&amp;#91;derive(Component&amp;#41;]&lt;br /&gt;struct PlayButton;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;...для поиска самой кнопки &quot;Играть&quot; и корневого компонента этой кнопки.&lt;br /&gt;&lt;br /&gt;Сама модель UI строиться по логике Flexbox и предстовляет собой довольно гибкую систему, но слишком громоздкую для человеческого глаза и может очень легко спугнуть новичка.&lt;br /&gt;&lt;br /&gt;Создания кнопки:&lt;br /&gt;&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoiler8aeM9E&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoiler8aeM9E&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler8aeM9E&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler8aeM9E&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoiler8aeM9E&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoiler8aeM9E&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler8aeM9E&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoiler8aeM9E&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoiler8aeM9E&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;fn spawn_main_menu(mut commands: Commands, asset_server: Res&lt;AssetServer&gt;&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;commands&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.spawn((&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NodeBundle {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style: Style {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;size: Size::width(Val::Percent(100.&amp;#41;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;align_items: AlignItems::Center,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;justify_content: JustifyContent::Center,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RootNode,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.with_children(|parent| {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parent&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.spawn((&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ButtonBundle {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style: Style {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;size: Size::new(Val::Px(300.&amp;#41;, Val::Px(130.&amp;#41;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;align_items: AlignItems::Center,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;justify_content: JustifyContent::Center,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background_color: BackgroundColor::from(Color::rgb(0.10, 0.1, 0.15&amp;#41;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PlayButton,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.with_children(|parent| {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parent.spawn(TextBundle::from_section(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Текст&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TextStyle {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font: asset_server.load(&quot;fonts/EBGaramond08-Regular.otf&quot;&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font_size: 40.,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: Color::rgb(0.9, 0.9, 0.9&amp;#41;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..default(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;#41;;&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;&lt;br /&gt;&lt;br /&gt;Хотя с другой стороны трудно тут как либо прокомментировать, код сам себя объясняет. Единственное что отметить можно это логику: КорневойКомпонент -&gt; Кнопка -&gt; Текст.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;Взаимодействие с кнопками&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Для взаимодействия с кнопкой нужно использовать запрос (Query) вместе с параметром Interaction (это enum со всеми возможными действиями над кнопкой) и компонентов &lt;ИмяНашейКнопочки&gt;.&lt;br /&gt;&lt;br /&gt;Так же не забываем использовать конструкцию...&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;if let Ok(...&amp;#41; = ... {}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;...что бы исключить ошибку если элемента не существует.&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;fn play_button_interaction(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut commands: Commands,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menu_query: Query&lt;(&amp;Interaction, Entity&amp;#41;, With&lt;PlayButton&gt;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mut state: ResMut&lt;NextState&lt;AppState&gt;&gt;,&lt;br /&gt;&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if let Ok((interaction, entity&amp;#41;&amp;#41; = menu_query.get_single(&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;match interaction {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Interaction::Clicked =&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;commands.entity(entity&amp;#41;.despawn_recursive(&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state.set(AppState::Game&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Interaction::Hovered =&gt; {}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Interaction::None =&gt; {}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Сущность удаляем рекурсивно что бы его наследники тоже были удалены.&lt;br /&gt;&lt;br /&gt;На этом всё.&lt;br /&gt;&lt;br /&gt;P.S.&lt;br /&gt;Долька арбуза? Мечта детства получить награду на Gcup выполнена!</content:encoded>
			<category>Общее обсуждение Игровых движков</category>
			<dc:creator>minecrafter2</dc:creator>
			<guid>https://gcup.ru/forum/3-104081-1</guid>
		</item>
		<item>
			<title>Рейкаст и Гизмо</title>
			<link>https://gcup.ru/forum/59-104083-1</link>
			<pubDate>Tue, 27 Jun 2023 14:03:09 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Описание темы: Разбор терминов&lt;br /&gt;Автор темы: Lev&lt;br /&gt;Автор последнего сообщения: Lev&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Привет! Расскажите кто как понимает значение слов &quot;Рейкаст&quot; и &quot;Гизмо&quot; в разных контекстах.</content:encoded>
			<category>Unity</category>
			<dc:creator>Lev</dc:creator>
			<guid>https://gcup.ru/forum/59-104083-1</guid>
		</item>
		<item>
			<title>Создание объекта рейкастом</title>
			<link>https://gcup.ru/forum/59-99042-1</link>
			<pubDate>Tue, 27 Jun 2023 13:58:25 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: malis1&lt;br /&gt;Автор последнего сообщения: Lev&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Ребята,есть рейкаст,как мне на его определенной длинне создавать объект,при том условии то что рейкаст постоянно движется т.к он находиться на ГГ,жду ответов спс !)</content:encoded>
			<category>Unity</category>
			<dc:creator>malis1</dc:creator>
			<guid>https://gcup.ru/forum/59-99042-1</guid>
		</item>
		<item>
			<title>То ли радиус камеры, то ли расстояние отрисовки текстуры</title>
			<link>https://gcup.ru/forum/59-104082-1</link>
			<pubDate>Mon, 26 Jun 2023 19:32:54 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/59&quot;&gt;Unity&lt;/a&gt;&lt;br /&gt;Автор темы: Granner&lt;br /&gt;Автор последнего сообщения: Storm54&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>При приближении к объекту видна граница отрисовки текстуры по кругу (https://imgur.com/a/7wC1Kud). Пересмотрел настройки камеры, текстуры. Ничего не могу понять, даже где искать эту проблему. Подозреваю, что настройка этого чуда примитивная, но найти сам не могу. Мне надо чтобы расстояние, на котором начинает отрисовываться более четкая текстура было больше чем сейчас (не примерно метров 10, а больше). Иначе говоря, радиус шара от камеры игрока был больше. Как-то так...</content:encoded>
			<category>Unity</category>
			<dc:creator>Granner</dc:creator>
			<guid>https://gcup.ru/forum/59-104082-1</guid>
		</item>
	</channel>
</rss>