{"id":227,"date":"2020-12-15T10:30:11","date_gmt":"2020-12-15T10:30:11","guid":{"rendered":"https:\/\/otus.ru\/journal\/?p=227"},"modified":"2023-10-06T21:17:22","modified_gmt":"2023-10-06T21:17:22","slug":"zombi-shuter-na-dots-v-unity","status":"publish","type":"post","link":"https:\/\/otus.ru\/journal\/zombi-shuter-na-dots-v-unity\/","title":{"rendered":"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title \" >\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/otus.ru\/journal\/zombi-shuter-na-dots-v-unity\/#DOTS\" title=\"DOTS\">DOTS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/otus.ru\/journal\/zombi-shuter-na-dots-v-unity\/#Entity_Component_System\" title=\"Entity Component System\">Entity Component System<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/otus.ru\/journal\/zombi-shuter-na-dots-v-unity\/#%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%B0%D0%B2%D0%BB%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82\" title=\"\u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\">\u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/otus.ru\/journal\/zombi-shuter-na-dots-v-unity\/#%D0%9F%D0%BE%D0%B7%D0%BD%D0%B0%D0%B5%D0%BC_%D1%81%D1%83%D1%89%D0%BD%D0%BE%D1%81%D1%82%D0%B8\" title=\"\u041f\u043e\u0437\u043d\u0430\u0435\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438\">\u041f\u043e\u0437\u043d\u0430\u0435\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/otus.ru\/journal\/zombi-shuter-na-dots-v-unity\/#%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D0%B8%D0%B3%D1%80%D0%B0_%D0%B1%D0%B5%D0%B7_%D0%B8%D0%B3%D1%80%D0%BE%D0%BA%D0%B0\" title=\"\u0427\u0442\u043e \u0437\u0430 \u0438\u0433\u0440\u0430 \u0431\u0435\u0437 \u0438\u0433\u0440\u043e\u043a\u0430?\">\u0427\u0442\u043e \u0437\u0430 \u0438\u0433\u0440\u0430 \u0431\u0435\u0437 \u0438\u0433\u0440\u043e\u043a\u0430?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/otus.ru\/journal\/zombi-shuter-na-dots-v-unity\/#%D0%98%D0%BB%D0%BB%D1%8E%D0%B7%D0%B8%D1%8F_%D0%B6%D0%B8%D0%B7%D0%BD%D0%B8\" title=\"\u0418\u043b\u043b\u044e\u0437\u0438\u044f \u0436\u0438\u0437\u043d\u0438\">\u0418\u043b\u043b\u044e\u0437\u0438\u044f \u0436\u0438\u0437\u043d\u0438<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/otus.ru\/journal\/zombi-shuter-na-dots-v-unity\/#%D0%90_%D1%8F_%D0%B2%D1%81%D0%B5_%D0%B3%D0%BB%D1%8F%D0%B6%D1%83_%D0%B3%D0%BB%D0%B0%D0%B7_%D0%BD%D0%B5_%D0%BE%D1%82%D0%B2%D0%BE%D0%B6%D1%83\" title=\"\u0410 \u044f \u0432\u0441\u0435 \u0433\u043b\u044f\u0436\u0443, \u0433\u043b\u0430\u0437 \u043d\u0435 \u043e\u0442\u0432\u043e\u0436\u0443\">\u0410 \u044f \u0432\u0441\u0435 \u0433\u043b\u044f\u0436\u0443, \u0433\u043b\u0430\u0437 \u043d\u0435 \u043e\u0442\u0432\u043e\u0436\u0443<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/otus.ru\/journal\/zombi-shuter-na-dots-v-unity\/#%D0%A1%D1%82%D1%80%D0%B5%D0%BB%D1%8F%D0%B9_%D0%93%D0%BB%D0%B5%D0%B1_%D0%95%D0%B3%D0%BE%D1%80%D1%8B%D1%87\" title=\"\u0421\u0442\u0440\u0435\u043b\u044f\u0439, \u0413\u043b\u0435\u0431 \u0415\u0433\u043e\u0440\u044b\u0447!\">\u0421\u0442\u0440\u0435\u043b\u044f\u0439, \u0413\u043b\u0435\u0431 \u0415\u0433\u043e\u0440\u044b\u0447!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/otus.ru\/journal\/zombi-shuter-na-dots-v-unity\/#%D0%9E%D0%B6%D0%B8%D0%B2%D1%88%D0%B8%D0%B5_%D0%BC%D0%B5%D1%80%D1%82%D0%B2%D0%B5%D1%86%D1%8B\" title=\"\u041e\u0436\u0438\u0432\u0448\u0438\u0435 \u043c\u0435\u0440\u0442\u0432\u0435\u0446\u044b\">\u041e\u0436\u0438\u0432\u0448\u0438\u0435 \u043c\u0435\u0440\u0442\u0432\u0435\u0446\u044b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/otus.ru\/journal\/zombi-shuter-na-dots-v-unity\/#%D0%91%D0%B5%D0%B3%D0%B8_%D0%9B%D0%BE%D0%BB%D0%B0_%D0%91%D0%B5%D0%B3%D0%B8\" title=\"\u0411\u0435\u0433\u0438, \u041b\u043e\u043b\u0430, \u0411\u0435\u0433\u0438!\">\u0411\u0435\u0433\u0438, \u041b\u043e\u043b\u0430, \u0411\u0435\u0433\u0438!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/otus.ru\/journal\/zombi-shuter-na-dots-v-unity\/#%D0%9A%D0%BE%D0%BD%D0%B5%D1%86\" title=\"\u041a\u043e\u043d\u0435\u0446\">\u041a\u043e\u043d\u0435\u0446<\/a><\/li><\/ul><\/nav><\/div>\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/otus.ru\/lessons\/unity-professional\/?utm_source=oj&amp;utm_medium=affilate&amp;utm_campaign=unitypro\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"970\" height=\"90\" src=\"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya.jpg\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\" class=\"wp-image-7658\" srcset=\"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya.jpg 970w, https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya-300x28.jpg 300w, https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya-150x14.jpg 150w, https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya-768x71.jpg 768w\" sizes=\"auto, (max-width: 970px) 100vw, 970px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0417\u0430\u043f\u043e\u043b\u044c\u043d\u043e\u0432, \u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043a\u0443\u0440\u0441\u0430\u0445 <a href=\"https:\/\/otus.pw\/Eg52\/\">Unity Basic<\/a> \u0438 <a href=\"https:\/\/otus.pw\/0Q20\/\">Unity Pro<\/a> \u0432 <strong>OTUS<\/strong>. \u0418 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u043f\u0440\u043e, \u0431\u0435\u0437 \u043f\u0440\u0435\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f, \u0431\u0443\u0434\u0443\u0449\u0435\u0435 Unity &#8212; \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e DOTS.<\/p>\n\n\n\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 \u044d\u0442\u043e\u0442 DOTS, \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043e\u043d \u0440\u0435\u0448\u0430\u0435\u0442 \u0438 \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435.<\/p>\n\n\n\n<p>\u041d\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u0432\u0441\u0435 \u0436\u0435, \u0441\u0442\u043e\u0438\u0442 \u0441 \u0442\u0435\u043e\u0440\u0438\u0438.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"DOTS\"><\/span>DOTS<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>DOTS (\u201cData Oriented Tech Stack\u201d &#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0442\u0435\u043a, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0435) &#8212; \u044d\u0442\u043e \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438\u0433\u0440 \u043d\u0430 \u0434\u0432\u0438\u0436\u043a\u0435 Unity. \u0412\u043f\u0435\u0440\u0432\u044b\u0435 \u043e\u043d \u0431\u044b\u043b \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u0432 2017 \u0433\u043e\u0434\u0443, \u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0435\u0449\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 &#8212; \u0432 2016. \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430 Unity \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0433\u0430\u043d\u043e\u043c \u201cperformance by default\u201d (\u201c\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u201d): \u043e\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u201c\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443\u201d Unity, \u0433\u0434\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0435 API \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0443\u043b\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0442.\u0434.<\/p>\n\n\n\n<p>\u0414\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, DOTS \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u0422\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Job System (\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u0430\u0434\u0430\u0447) \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 API \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u043e \u0441\u0430\u043c\u044b\u043c \u0432\u0430\u0436\u043d\u044b\u043c \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c DOTS \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 Entity-Component-System (ECS).<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Entity_Component_System\"><\/span>Entity Component System<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u0442\u043e\u043b\u043f\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435. \u0414\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u044b, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044f \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u044f \u0438\u0445 \u043d\u043e\u0432\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434, \u043d\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u043e\u043d \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443: \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0431\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b (god classes), \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0435 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c\u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438, \u0430 \u0447\u0430\u0441\u0442\u044c &#8212; \u0434\u0440\u0443\u0433\u0438\u043c\u0438.<\/p>\n\n\n\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f. \u0412 \u0433\u0435\u0439\u043c\u0434\u0435\u0432\u0435 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 Entity-Component (EC) \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u201c\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u201d Unity. \u0412 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0435 EC \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 (entities, \u0432 Unity \u043e\u043d\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u043c GameObject) \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u0410 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043a\u0430\u043a \u043a\u043e\u0434, \u0442\u0430\u043a \u0438 \u0434\u0430\u043d\u043d\u044b\u0435. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0438\u0437 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043a\u0430\u043a \u0438\u0437 \u043a\u0443\u0431\u0438\u043a\u043e\u0432 \u041b\u0435\u0433\u043e.<\/p>\n\n\n\n<p>\u041f\u0430\u0442\u0442\u0435\u0440\u043d Entity-Component-System \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u0443 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443 \u0435\u0449\u0435 \u0434\u0430\u043b\u044c\u0448\u0435. \u041e\u043d \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u043a\u043e\u0434 \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c. \u0410 \u0435\u0449\u0435, \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u042d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0435\u0448\u0430 \u043d\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 \u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n\n\n\n<p>\u041d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0435\u043e\u0440\u0438\u0438, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435!<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%B0%D0%B2%D0%BB%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82\"><\/span>\u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u0442\u044c, \u0447\u0442\u043e \u0445\u043e\u0442\u044f DOTS \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442, \u043e\u043d \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 preview \u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u044b\u0440\u043e\u0439. \u041c\u043d\u043e\u0433\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0435\u0449\u0435 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u044b \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0435 \u0431\u0430\u0433\u0438. \u041f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u0432 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434: \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 DOTS, \u0430 \u0447\u0430\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u0434\u043e\u0431\u0440\u044b\u0445 GameObject\u2019\u0430\u0445.<\/p>\n\n\n\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430 \u043d\u0430 Unity 2020.1.16f1. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. DOTS \u043e\u0447\u0435\u043d\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f.<\/p>\n\n\n\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0448\u0430\u0431\u043b\u043e\u043d \u201c3D\u201d \u0432 Unity Hub). \u0418\u0442\u0430\u043a, \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c DOTS \u0432 \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0438\u0445 \u043d\u0435 \u043d\u0430\u0439\u0442\u0438. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u0430\u0432\u0442\u043e\u0440\u044b Unity \u0443\u0431\u0440\u0430\u043b\u0438 \u0432\u0441\u0435 preview-\u043f\u0430\u043a\u0435\u0442\u044b \u0438\u0437 \u043e\u0431\u0449\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u043b\u0435\u0432\u043e\u043c \u0443\u0433\u043b\u0443 \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u201c+\u201d \u0438 \u0432 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u043c\u0435\u043d\u044e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u201cAdd package from git URL&#8230;\u201d:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/AOsg49HW2lsdFWZEZb-tUCFTFZ6iVw3j3U2l7dH_15E3kfG2OzX_VezYy7wm9jy-hdet84ndLAOOKEWdhaKP9XJ1fOVfuK8K3gY-OV3BPg7qDrK3ZCd7lk2i6CM3cES1VfA4sQK7\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>com.unity.entities<\/code> &#8212; \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 Entity-Component-System \u0432 DOTS.&nbsp;<\/li>\n\n\n\n<li><code>com.unity.physics<\/code> &#8212; \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0434\u043b\u044f DOTS.<\/li>\n\n\n\n<li><code>com.unity.rendering.hybrid<\/code> &#8212; \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u0440\u0435\u043d\u0434\u0435\u0440\u0435\u0440 \u0434\u043b\u044f DOTS, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0440\u043e\u043b\u044c \u201c\u043c\u043e\u0441\u0442\u0430\u201d \u043c\u0435\u0436\u0434\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 DOTS \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 Unity.<\/li>\n<\/ul>\n\n\n\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u044d\u0442\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 DOTS. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043a\u0440\u0430\u0442\u043a\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0435\u0449\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>com.unity.burst<\/code> &#8212; \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0434\u043b\u044f C#.<\/li>\n\n\n\n<li><code>com.unity.collections<\/code> &#8212; \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 (\u0441\u043f\u0438\u0441\u043e\u043a, \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438 \u0442.\u0434.), \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u0432\u0438\u0436\u043a\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430.<\/li>\n\n\n\n<li><code>com.unity.jobs<\/code> &#8212; \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f DOTS. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u201c\u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0433\u043e\u043d\u043a\u0438\u201d (race conditions).<\/li>\n\n\n\n<li><code>com.unity.mathematics<\/code> &#8212; \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u0432\u0437\u0430\u043c\u0435\u043d \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 Vector2, Vector3 \u0438 \u0442.\u0434.<\/li>\n<\/ul>\n\n\n\n<p>\u041a\u0440\u043e\u043c\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 DOTS \u043d\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442 Cinemachine. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u0430\u043c\u0438 \u0432 Unity. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043d\u0435 \u0431\u0443\u0434\u0443, \u043d\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u0435\u0449\u0435 \u043d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/sGLoEQbdaUFZUVVnmNfan36UJq2uDg1hatRDH6bdOU4ZD1xfYDL2ystMZRN12_89aGpRQBJ6szDz8HCe-_w3L9sQ3UfGFWwhRzSRahSLps9HVmRlYA1p3ITtQStj6mYBeVnFSeuE\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u041d\u0443 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u0430\u0440\u0443 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u0430\u0441\u0441\u0435\u0442\u043e\u0432. \u042f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u043f\u0430\u043a\u0438:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/assetstore.unity.com\/packages\/3d\/characters\/toony-tiny-people-demo-113188\">https:\/\/assetstore.unity.com\/packages\/3d\/characters\/toony-tiny-people-demo-113188<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/assetstore.unity.com\/packages\/3d\/environments\/landscapes\/low-poly-simple-nature-pack-162153\">https:\/\/assetstore.unity.com\/packages\/3d\/environments\/landscapes\/low-poly-simple-nature-pack-162153<\/a><\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%D0%9F%D0%BE%D0%B7%D0%BD%D0%B0%D0%B5%D0%BC_%D1%81%D1%83%D1%89%D0%BD%D0%BE%D1%81%D1%82%D0%B8\"><\/span>\u041f\u043e\u0437\u043d\u0430\u0435\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u0441\u0446\u0435\u043d\u0435 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0433\u0440\u0430\u0442\u044c \u0440\u043e\u043b\u044c \u0417\u0435\u043c\u043b\u0438. \u042f \u0434\u0435\u043b\u0430\u044e \u044d\u0442\u043e \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e: \u0449\u0435\u043b\u043a\u0430\u044e \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0432 \u043e\u043a\u043d\u0435 Hierarchy \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u044e 3D&nbsp;Object\u21e8Plane:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/LBMaKYvrsSLZ7a5u6VqjYOuTDdTnyCQAKt95VrdoWvwnrqUTd2tWIkfTLiznn6y1a5YCw4pAx7dajhAhs9Z4yi-axDNV4YqTqwG00qdvpep9w2iK1U9kYgP6Fy8eDYa1OIQZ30F2\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u041d\u0430\u0437\u043d\u0430\u0447\u0443 \u0435\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0437\u0435\u043b\u0435\u043d\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 \u0442\u0440\u0430\u0432\u0443:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/QLTXhAXR6bdjV_D_waJutW30K-7LWSxzRaWrKDJLpUlQVVIdvf-spLVWKtZ0xe3mBsEPEnkwBKP0ZRpsdg19a5IU_iKO8qVzSAWKBQcHA2q0F1OMEZLCazAavNa_IWdYPF0FMrFX\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0432 \u0441\u0446\u0435\u043d\u0435 \u0435\u0441\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 GameObject, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0439 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c. \u0422\u0430\u043a \u043f\u0440\u0438\u0447\u0435\u043c \u0436\u0435 \u0437\u0434\u0435\u0441\u044c DOTS? \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u0447\u0435\u043c. \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u0441\u0446\u0435\u043d\u0443 \u0432 Unity \u043c\u044b \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.<\/p>\n\n\n\n<p>\u041d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u043d\u0430 \u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u0435\u0441\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442: ConvertToEntity. \u0414\u043e\u0431\u0430\u0432\u0438\u0432 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 Plane, \u043c\u044b \u0443\u043a\u0430\u0436\u0435\u043c Unity \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438\u0433\u0440\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 ECS:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/ZI_YYyXDOkR-rGAg_hdwH45DirZBzeOPgz68tGpNVx9CUECVR2v5Vc-9-SwRAkleqkrMj3R6DzQgYSgaIlE5ddfzTAhzwvDJ7daVfX2eOJvRm3h-T4vRqqOgqbH0O7gO2bIJcFaT\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0434\u0432\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f: Convert and Destroy (\u0432\u044b\u0431\u0440\u0430\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0438 Convert And Inject Game Object. \u0412\u044b\u0431\u043e\u0440 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u0430 \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f. \u041c\u044b \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u044d\u0442\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0442.\u0435. \u0431\u0443\u0434\u0435\u043c \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442.<\/p>\n\n\n\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0438\u0433\u0440\u0443 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/azufftsj5VAUmbOqNXuft_EeHKzbXbNyZXg2pQRTsDEKDfnhebfzxhNOYiwh0et1MAq9kCdUcqhTfk_uvKZJfeMf9nqnR3PC89Rcp5QWNQsvmIHZxCO6aJT-87bp1tjuYWjEK-Rf\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0418\u0442\u0430\u043a, \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Plane \u043f\u0440\u043e\u043f\u0430\u043b \u0438\u0437 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438, \u043d\u043e \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0432\u0441\u0435 \u0436\u0435 \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u0432 \u0438\u0433\u0440\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d\u0430 \u0441\u0442\u0430\u043b\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c\u044e. \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c?<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/otus.ru\/lessons\/unity-professional\/?utm_source=oj&amp;utm_medium=affilate&amp;utm_campaign=unitypro\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"970\" height=\"90\" src=\"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya.jpg\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\" class=\"wp-image-7658\" srcset=\"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya.jpg 970w, https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya-300x28.jpg 300w, https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya-150x14.jpg 150w, https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya-768x71.jpg 768w\" sizes=\"auto, (max-width: 970px) 100vw, 970px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Unity \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u043c\u0435\u043d\u044e Window\u21e8Analysis\u21e8Entity Debugger:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/To4FFU_jp8yLHnheoH51SsDAUwSZ88gp_3gUXNo-kvm1xLm8mDvfsSPXPGQ25nmtnIlz-07rRQlyMzhamO8Iicey6K8GFTUT9mU17Et7dWAfk8qvalFvphluDSu0qxpe7MT97Q53\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0412 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0432\u0441\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445. \u041c\u044b \u043f\u043e\u043a\u0430 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0432\u043e\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435, \u0447\u0442\u043e \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0437\u0434\u0435\u0441\u044c &#8212; \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Unity. \u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043d\u0430 \u043d\u0438\u0445 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n\n\n\n<p>\u0412\u044b\u0431\u0440\u0430\u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u043c\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043e\u043d\u0430 \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u0435\u0442. \u0410 \u0435\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d \u043f\u0443\u043d\u043a\u0442 All Entities, \u043a\u0430\u043a \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0435\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439. \u0412 \u043c\u043e\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0445 \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0435: WorldTime (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c Unity, \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f) \u0438 Plane &#8212; \u043d\u0430\u0448\u0430 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c!<\/p>\n\n\n\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c Plane, \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043d\u0430\u043c, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043e\u043d\u0430 \u0432 \u0441\u0435\u0431\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/Wtf27xMr4WhWpfLKcybWlMUAfG26xa7IAk0__6JxDfI2NKlVfhGVu7lOFHLxJhclM6xHNuIyrDukDcviHRVP5-8g6WsXESa23_oCNu-GT2DNSvi03soFTzI8NU0yzhYfoyGSQBNe\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 Unity \u0437\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u0438\u0435, \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b. \u0422\u0430\u043a, \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 Transform \u0431\u044b\u043b \u0437\u0430\u043c\u0435\u043d\u0435\u043d \u043d\u0430 \u0442\u0440\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430: LocalToWorld, Rotation \u0438 Translation. \u0412\u043c\u0435\u0441\u0442\u043e MeshFilter \u0438 MeshRenderer \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 RenderMesh. \u0410 \u0434\u043b\u044f \u0444\u0438\u0437\u0438\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0441\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 PhysicsCollider.<\/p>\n\n\n\n<p>\u042f \u043f\u043e\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435. \u041f\u043e\u043a\u0430 \u0436\u0435 \u0434\u043b\u044f \u043d\u0430\u0441 \u0432\u0430\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0421\u0443\u0449\u043d\u043e\u0441\u0442\u0438 DOTS \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0441\u0432\u043e\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0441 \u0438\u0433\u0440\u043e\u0432\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0414\u043b\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 Unity \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0438\u043c \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b DOTS (\u0437\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0435\u0449\u0435 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u043d\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u0432\u0441\u0435\u0439 \u043f\u043e\u043b\u043d\u043e\u0442\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432)<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u0433\u0440\u044b \u0432 \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u0435 \u043d\u0435\u043b\u044c\u0437\u044f. \u0427\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e-\u0442\u0430\u043a\u0438 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435. \u041d\u0430\u0434\u0435\u044e\u0441\u044c \u044d\u0442\u043e \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u043f\u043e\u043f\u0440\u0430\u0432\u044f\u0442.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D0%B8%D0%B3%D1%80%D0%B0_%D0%B1%D0%B5%D0%B7_%D0%B8%D0%B3%D1%80%D0%BE%D0%BA%D0%B0\"><\/span>\u0427\u0442\u043e \u0437\u0430 \u0438\u0433\u0440\u0430 \u0431\u0435\u0437 \u0438\u0433\u0440\u043e\u043a\u0430?<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0448 \u0438\u0433\u0440\u043e\u043a. \u042f \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043d\u043e\u0432\u044b\u0439, \u043f\u0443\u0441\u0442\u043e\u0439 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u043d\u0430\u0437\u043e\u0432\u0443 \u0435\u0433\u043e Player. \u0421\u0440\u0430\u0437\u0443 \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u0442\u0443\u0434\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 ConvertToEntity, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u043f\u0440\u043e \u043d\u0435\u0433\u043e.<\/p>\n\n\n\n<p>\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u044f \u0441\u043e\u0437\u0434\u0430\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0432\u0438\u0434\u0430 \u0438\u0433\u0440\u043e\u043a\u0430 (\u0442.\u0435. \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 3d-\u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430). \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043a\u0430\u043f\u0441\u0443\u043b\u0443 (\u0449\u0435\u043b\u0447\u043e\u043a \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438, 3D Object\u21e8Capsule). \u0427\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u043d\u0435 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0432 \u0437\u0435\u043c\u043b\u044e, \u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c Position.Y \u0440\u0430\u0432\u043d\u044b\u043c 1.<\/p>\n\n\n\n<p>\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u0430\u043f\u0441\u0443\u043b\u044b, Unity \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0438 \u043a\u043e\u043b\u043b\u0430\u0439\u0434\u0435\u0440. \u041d\u043e \u0447\u0442\u043e\u0431\u044b \u0444\u0438\u0437\u0438\u043a\u0430 \u043c\u043e\u0433\u043b\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0448\u0438\u043c \u0438\u0433\u0440\u043e\u0432\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442. \u0415\u0433\u043e \u044f \u0431\u0443\u0434\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 (Player) \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0433\u043e RigidBody \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 DOTS, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f PhysicsBody:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/U6DDCnKUV87rL5XeaOy4lvFkbMrTqYHg9cdhsvdDrPeXlwqYdEDckV32eV7o4vhqrDFrRQz7l7Cmko4dti2KCQuPitGV_OU6RbLQLAIYruWR056eIUxoxYqr_1zZD60sVPpx9hXz\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0412 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043c\u0430\u0441\u0441\u0443 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 Mass)&nbsp; \u0441\u0442\u043e\u0438\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c: \u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044e 70. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u044f \u0441\u0431\u0440\u043e\u0448\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 Angular Damping \u0432 0. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043d\u0430\u0441 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u043a\u043e\u0434\u0430, \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0444\u0438\u0437\u0438\u043a\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u043b\u0430 \u044d\u0442\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435. \u041d\u0443 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044e Gravity Factor \u0440\u0430\u0432\u043d\u044b\u043c 1.5. \u0412 \u043c\u043e\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445, \u0435\u0441\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0440\u0430\u0432\u043d\u044b\u043c 1, \u0444\u0438\u0437\u0438\u043a\u0430 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430 \u041b\u0443\u043d\u0435.<\/p>\n\n\n\n<p>\u0418\u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436-\u043a\u0430\u043f\u0441\u0443\u043b\u0430. \u041d\u043e \u043a\u0430\u043a \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f? \u0415\u0441\u043b\u0438 \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0447\u0442\u043e \u0432 ECS \u043b\u044e\u0431\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445. \u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0438\u0433\u0440\u043e\u043a\u0430. \u0410 \u0447\u0442\u043e\u0431\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u043d\u0430\u043b\u0430, \u043a\u0430\u043a\u0438\u043c\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u043c \u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430.<\/p>\n\n\n\n<p>\u041a\u043e\u0434 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 (<code>Scripts\/Components\/PlayerComponent.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Unity.Entities;\n \n&#91;GenerateAuthoringComponent]\npublic struct PlayerComponent : IComponentData\n{\n    public float movementSpeed;\n    public float rotationSpeed;\n}\n<\/code><\/pre>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><\/div><\/div>\n<\/div><\/div>\n\n\n\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u043d \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u0422\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 Unity.Entities \u0432\u043c\u0435\u0441\u0442\u043e UnityEngine. \u0412\u0437\u0430\u043c\u0435\u043d \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430. \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 MonoBehaviour \u0431\u044b\u043b \u0437\u0430\u043c\u0435\u043d\u0435\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c IComponentData. \u0410 \u0435\u0449\u0435 \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432!<\/p>\n\n\n\n<p>\u0412\u0430\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 GenerateAuthoringComponent. \u0415\u0441\u043b\u0438 \u0435\u0433\u043e \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u0442\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041d\u043e \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 Unity. \u0418\u043c\u0435\u043d\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 \u043c\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043c\u043e\u0436\u0435\u043c \u0432 \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Player:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/dygPeOq-g07mYRmYRI5ywDYL7DI_TS8mQewepgDMIR1NxtN9yxHhdzxAz6euaF0dlHguDQql0GjSvPYroAbjN_gtYw8kieHnPbADRzC1CkeSe4IYMfBjap_YlosFg8zx6k9iHNuV\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0418 \u0434\u0430\u0436\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b movementSpeed \u0438 rotationSpeed \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f! \u0412\u0441\u0435, \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438. \u041d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u044f \u0443\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0442\u0443\u0434\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (20 \u0438 500).<\/p>\n\n\n\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 (<code>Scripts\/Systems\/PlayerMovementSystem.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\nusing Unity.Entities;\nusing Unity.Mathematics;\nusing Unity.Physics;\nusing Unity.Transforms;\n \npublic class PlayerMovementSystem : ComponentSystem\n{\n    protected override void OnUpdate()\n    {\n        float deltaTime = Time.DeltaTime;\n        float2 input = new float2(Input.GetAxis(\"Horizontal\"), Input.GetAxis(\"Vertical\"));\n        Entities.ForEach((ref PlayerComponent player, ref LocalToWorld transform, ref PhysicsVelocity velocity) =&gt; {\n                float3 dir = transform.Forward * input.y * player.movementSpeed * deltaTime;\n                velocity.Linear += new float3(dir.x, 0.0f, dir.z);\n                velocity.Angular = new float3(0.0f, input.x * player.rotationSpeed * deltaTime, 0.0f);\n            });\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430\u0448\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <code>ComponentSystem<\/code>. \u042d\u0442\u043e \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435. \u041f\u043e\u043a\u0430 \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e, \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044f\u0441\u044c \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 \u0438 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Job System \u043f\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044e. \u041d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044f \u0437\u0434\u0435\u0441\u044c \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0441\u044c \u043a API Unity (<code>Time.DeltaTime<\/code> \u0438 \u043a\u043b\u0430\u0441\u0441 <code>Input<\/code>), \u043c\u043d\u0435 \u044d\u0442\u043e \u0438 \u043d\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n\n\n\n<p>\u041a\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 <code>OnUpdate<\/code>. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043a\u0430\u043a Update \u0432 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043d\u0430\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 <code>MonoBehaviour<\/code>.<\/p>\n\n\n\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 <code>Entities.ForEach<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0448\u0435\u0439 \u0441 \u0432\u0430\u043c\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043b\u043e\u0448\u0430\u0434\u043a\u043e\u0439, \u044f \u043c\u043e\u0433\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u0438\u043c\u0435\u044e\u0449\u0438\u0435 (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435) \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b <code>PlayerComponent<\/code>, <code>LocalToWorld<\/code> \u0438 <code>PhysicsVelocity<\/code>. \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0443 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0442, \u043e\u043d\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.<\/p>\n\n\n\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c, \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u043f\u0435\u0440\u0435\u0447\u043d\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043b\u044f\u043c\u0431\u0434\u044b, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e. \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <code>ref<\/code>. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u0438 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0438\u0445 \u043a\u043e\u043f\u0438\u0438, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430.<\/p>\n\n\n\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0438\u0433\u0440\u0443:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/GYzQIUgcoGpTtIRsRjDp77Ug6YKw2kTTgdJYUMNTlDNibBYdMnWZcwYZekcZOpspAt9NyCWc_a9f0IIR76xG8fU3rmIdsEmY6pMxwiU27kfZ3D7ingyEMH2WeuAQ_jrVEcSilgP3\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442! \u041f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c! \u041d\u043e \u043f\u043e\u0433\u043e\u0434\u0438\u0442\u0435, \u0447\u0442\u043e \u0436\u0435 \u044d\u0442\u043e? \u041f\u043e\u0447\u0435\u043c\u0443 \u043a\u0430\u043f\u0441\u0443\u043b\u0430 \u0437\u0430\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f?<\/p>\n\n\n\n<p>\u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0444\u0438\u0437\u0438\u043a\u0435 Unity \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 Freeze Rotation \u0443 Rigidbody, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430. \u0412 \u0444\u0438\u0437\u0438\u043a\u0435 DOTS \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443.<\/p>\n\n\n\n<p>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 (<code>Scripts\/Components\/FreezeVerticalRotationComponent.cs<\/code>) \u043c\u043d\u0435 \u0437\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u0435\u043d \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0430\u043a \u043c\u0430\u0440\u043a\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u044f \u0432 \u043d\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Unity.Entities;\n \n&#91;GenerateAuthoringComponent]\npublic struct FreezeVerticalRotationComponent : IComponentData\n{\n}\n<\/code><\/pre>\n\n\n\n<p>\u0410 \u0432\u043e\u0442 \u043a\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (<code>Scripts\/Systems\/FreezeVerticalRotationSystem.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\nusing Unity.Entities;\nusing Unity.Mathematics;\nusing Unity.Jobs;\nusing Unity.Physics;\n \npublic class FreezeVerticalRotationSystem : JobComponentSystem\n{\n    protected override JobHandle OnUpdate(JobHandle inputDeps)\n    {\n        JobHandle job = Entities.ForEach((ref FreezeVerticalRotationComponent tag, ref PhysicsMass mass) =&gt; {\n                mass.InverseInertia.xz = new float2(0.0f);\n            }).Schedule(inputDeps);\n \n        return job;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c API \u0434\u0432\u0438\u0436\u043a\u0430, \u044f \u043c\u043e\u0433\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0435 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0430 <code>ComponentSystem <\/code>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 <code>JobComponentSystem<\/code>.<\/p>\n\n\n\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u0438 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 <code>OnUpdate<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 <code>JobHandle<\/code> \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>JobHandle<\/code>. \u042d\u0442\u0438 \u0445\u0435\u043d\u0434\u043b\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438. \u041e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0445\u0435\u043d\u0434\u043b\u044b, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0433\u043e\u043d\u043a\u0438 (race condition), \u043a\u043e\u0433\u0434\u0430 \u0434\u0432\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n\n\n\n<p>\u0417\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>Entities.ForEach<\/code>, \u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 Schedule, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432\u043e \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u0430\u0445.<\/p>\n\n\n\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>FreezeVerticalRotationComponent <\/code>\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 <code>Player <\/code>\u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0438\u0433\u0440\u0443:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/nagvHLtqwA8cv_GQRH0z0f28IxvC8AcfeiEm5xS5Bca3XuyC3thXsDR_ftk656LzQ8jxYfQIzo0z-knXxlut5G5XYFkRB0YXUUAip2MHzXDBMHuBmTPF8iRtbsQsI9dgKBwteWf5\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0448 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436 \u043d\u0435 \u0437\u0430\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%D0%98%D0%BB%D0%BB%D1%8E%D0%B7%D0%B8%D1%8F_%D0%B6%D0%B8%D0%B7%D0%BD%D0%B8\"><\/span>\u0418\u043b\u043b\u044e\u0437\u0438\u044f \u0436\u0438\u0437\u043d\u0438<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u0436-\u043a\u0430\u043f\u0441\u0443\u043b\u0430 &#8212; \u044d\u0442\u043e, \u043d\u0435\u0441\u043e\u043c\u043d\u0435\u043d\u043d\u043e, \u0432\u0435\u0441\u0435\u043b\u043e. \u041d\u043e \u0432\u0435\u0441\u0435\u043b\u0435\u0435 \u0431\u044b\u043b\u043e \u0431\u044b, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0430\u0448 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0433\u0435\u0440\u043e\u0439 \u0431\u044b\u043b \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 &#8212; \u0431\u044b\u043b \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d.<\/p>\n\n\n\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043d\u0430 DOTS \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u043d\u043d\u0438\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u044f \u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443. \u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u0441\u0442\u0430\u0440\u044b\u043c \u0434\u043e\u0431\u0440\u044b\u043c Animator Controller.<\/p>\n\n\n\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 Player \u043f\u0440\u0435\u0444\u0430\u0431 <code>TT_demo\/prefabs\/TT_demo_police<\/code> \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 <code>ToonyTinyPeopleDemo <\/code>\u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0443 \u0435\u043c\u0443 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 Animator Controller, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0437\u0434\u0435\u0441\u044c \u043b\u0438\u0448\u044c \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/26PAJfWMgGOzh9c-I4SKDYn6setfY1u0IXrRRTy4DpxCu2wxsCv_kdGLCNXbhE2CUrB6aXQ-fFMz8Gi-xGJvPfUOEY1n7hNQFQCJNcHN6fKK54y1aM5ub928etq0DOFwqjCBLWyF\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0422\u0430\u043a\u0436\u0435 \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 <code>TT_demo_police<\/code> \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>ConvertToEntity<\/code>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 Conversion Mode \u0432 Convert and Inject Game Object. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438\u0433\u0440\u044b \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 3d-\u043c\u043e\u0434\u0435\u043b\u0438 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c, \u043d\u043e, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0438\u0433\u0440\u043e\u043a\u0430 \u0438 \u043a\u0430\u043f\u0441\u0443\u043b\u044b, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0438 <code>GameObject<\/code>. \u041e\u043d, \u043f\u0440\u0430\u0432\u0434\u0430,\u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u0440\u043d\u0435 (\u0442\u0430\u043a \u043a\u0430\u043a \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0432 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0431\u0435\u0437 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f <code>GameObject<\/code>):<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/tqN6J5E-Qpe0pi6wQtPjLGuXWqRIIsbAJPRuA2HdoLGlNROVGLeQzP39byV6t6yNSi-FOM_umkBGAyW6_L89UlIOD_J9klvTutyrgQsy-RKpCnOI7MlQVvNM0tvEybLqa0COqqwk\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0418 \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043d\u044e\u0430\u043d\u0441. \u0415\u0441\u043b\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0433\u0440\u0443, \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 3d-\u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/ZPKHK5yBPcCm7DiaP-a_tZFBcGBezWYqIU7_9FqrEdbF5wfFCbdcW2RHaHVfUnCPoaC8eJOlSxeLaeNj9IhtYvS-PH3ePdNKSLDsoZCvaWmfZRKZ5sYVCKxwE-9UUvc7V717pfYF\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443.<\/p>\n\n\n\n<p>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 (<code>Scripts\/Components\/CopyTransformComponent.cs<\/code>) \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0440\u043e\u043b\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043c\u0430\u0440\u043a\u0435\u0440\u0430:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Unity.Entities;\n \n&#91;GenerateAuthoringComponent]\npublic struct CopyTransformComponent : IComponentData\n{\n}\n<\/code><\/pre>\n\n\n\n<p>\u0410 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 (<code>Scripts\/Systems\/CopyTransformSystem.cs<\/code>) \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 Transform \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\nusing Unity.Transforms;\nusing Unity.Entities;\n \npublic class CopyTransformSystem : ComponentSystem\n{\n    protected override void OnUpdate()\n    {\n        Entities.ForEach((Entity entity, ref CopyTransformComponent tag, ref LocalToWorld localToWorld) => {\n                var transform = EntityManager.GetComponentObject&lt;Transform>(entity);\n                transform.position = localToWorld.Position;\n                transform.rotation = localToWorld.Rotation;\n            });\n    }\n}\n\n<\/code><\/pre>\n\n\n\n<p>\u0412\u0430\u0436\u043d\u044b\u043c \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0437\u0434\u0435\u0441\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 <code>Entity entity<\/code> \u0432 \u043b\u044f\u043c\u0431\u0434\u0443. \u042d\u0442\u043e\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 <code>ref<\/code>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u043f\u043e \u0441\u0443\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043c\u0435\u043d\u044f\u0442\u044c. \u041d\u043e \u0437\u0430\u0442\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u043a\u043b\u0430\u0441\u0441\u043e\u043c <code>EntityManager<\/code> \u0434\u043b\u044f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>Transform<\/code> \u0443 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>ConvertToEntity<\/code> \u043f\u0440\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u0440\u0435\u0436\u0438\u043c <code>Convert And Inject Game Object<\/code>).<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/otus.ru\/lessons\/unity-professional\/?utm_source=oj&amp;utm_medium=affilate&amp;utm_campaign=unitypro\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"970\" height=\"90\" src=\"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya.jpg\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\" class=\"wp-image-7658\" srcset=\"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya.jpg 970w, https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya-300x28.jpg 300w, https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya-150x14.jpg 150w, https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya-768x71.jpg 768w\" sizes=\"auto, (max-width: 970px) 100vw, 970px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>CopyTransformComponent<\/code> \u043a \u0438\u0433\u0440\u043e\u0432\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443 <code>TT_demo_police<\/code>. \u0418\u0433\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 <code>Capsule<\/code> \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044e (\u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043d\u0435\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u043b\u043b\u0430\u0439\u0434\u0435\u0440), \u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0443 \u0443 \u043d\u0435\u0433\u043e <code>MeshRenderer<\/code>, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u043f\u0441\u0443\u043b\u0430 \u043d\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435.<\/p>\n\n\n\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0438\u0433\u0440\u0443:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/1IXFxBaEUShp5Nquoelnomlksi49JMCVZzwrzRJNUKZocWYy7w5sFJDoTyWd2TzZYVLWzZlpaJilUg1X9SIF0GvTyx0tdenXpBjvSz2wdMIxtNB99uAvwKnfQSOIVr7ISBVXeD0B\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0418 \u0434\u0430, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0448 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436 \u0434\u0432\u0438\u0433\u0430\u0435\u0442\u0441\u044f.<\/p>\n\n\n\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c 3d-\u043c\u043e\u0434\u0435\u043b\u044c\u043a\u0435 \u0438\u0433\u0440\u043e\u043a\u0430 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e. \u041a\u0430\u043a \u0432\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0443\u0436\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>N.B.<\/em> \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434 \u0438\u0433\u0440\u043e\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d ECS, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u044d\u0442\u043e \u043b\u0438\u0448\u043d\u044f\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u043c EC. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 ECS \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u201c\u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u0430\u0441\u0441\u0430\u201d \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u0435\u0440\u0435 \u043c\u044b \u044d\u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c \u0438 \u0432 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432\u0440\u0430\u0433\u043e\u0432.<\/p>\n<\/blockquote>\n\n\n\n<p>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 (<code>Scripts\/Components\/AnimatedCharacterComponent.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Unity.Entities;\nusing UnityEngine;\n \n&#91;GenerateAuthoringComponent]\npublic struct AnimatedCharacterComponent : IComponentData\n{\n    public Entity animatorEntity;\n}\n<\/code><\/pre>\n\n\n\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 (<code>Scripts\/Systems\/AnimatedCharacterSystem.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\nusing Unity.Entities;\nusing Unity.Mathematics;\nusing Unity.Physics;\n \npublic class AnimatedCharacterSystem : ComponentSystem\n{\n    protected override void OnUpdate()\n    {\n        Entities.ForEach((Entity entity, ref AnimatedCharacterComponent character, ref PhysicsVelocity velocity) => {\n                var animator = EntityManager.GetComponentObject&lt;Animator>(character.animatorEntity);\n                animator.SetFloat(\"speed\", math.length(velocity.Linear));\n            });\n    }\n}\n\n\n<\/code><\/pre>\n\n\n\n<p>\u041d\u0438\u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442. \u0421\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>AnimatedCharacterComponent<\/code> \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c (<code>Player<\/code>) &#8212; \u0435\u043c\u0443 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <code>PhysicsVelocity<\/code> \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430. \u0410 \u0432\u043e\u0442 \u0430\u043d\u0438\u043c\u0430\u0442\u043e\u0440 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d \u043a \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 (<code>TT_demo_police<\/code>). \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043a \u0434\u0440\u0443\u0433\u043e\u0439, \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0438\u043f\u0430 <code>Entity<\/code> \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 <code>AnimatedCharacterComponent<\/code>. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0443 <code>ConvertToEntity<\/code>, \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0441\u0446\u0435\u043d\u044b \u044f \u0441\u043c\u043e\u0433\u0443 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0443\u0434\u0430 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438\u0433\u0440\u044b \u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/0ZmQNzcGi9aKtJrAOv5ebwoHBVV6RnqAo-Qedv7JPhIX0CZFm8ufSYFifi6AFeVEfWKAHwMTOOwnxBI3VHxELDhpyymKdtsc9f1ppVDtGImmcDYjqcajIBiHGo91d7GK1HkgXyhz\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u0438\u0433\u0440\u0443, \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/VAoLCBWhSEt38AiqKRv2uWBmt3GI1VbujTBmyn6qWcqa6Db8vFMGWuRBwPggBOBZCDj_yYVbYCfhepdiIzEaJ-7NXByP3t4Y18GU8IwDOCMA4fu3E_PIlcmoexb4btX5JRRzJQYp\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%D0%90_%D1%8F_%D0%B2%D1%81%D0%B5_%D0%B3%D0%BB%D1%8F%D0%B6%D1%83_%D0%B3%D0%BB%D0%B0%D0%B7_%D0%BD%D0%B5_%D0%BE%D1%82%D0%B2%D0%BE%D0%B6%D1%83\"><\/span>\u0410 \u044f \u0432\u0441\u0435 \u0433\u043b\u044f\u0436\u0443, \u0433\u043b\u0430\u0437 \u043d\u0435 \u043e\u0442\u0432\u043e\u0436\u0443<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u042f \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435\u043d\u0430\u0434\u043e\u043b\u0433\u043e \u043e\u0442\u0432\u043b\u0435\u043a\u0443\u0441\u044c \u0438 \u043d\u0430\u0432\u0435\u0434\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0440\u0430\u0441\u043e\u0442\u044b: \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u044e \u043a\u0430\u043c\u0435\u0440\u0443.<\/p>\n\n\n\n<p>\u0414\u043b\u044f \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 <code>SimpleNaturePack<\/code>, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u0435\u0433\u0430\u0442\u044c \u043f\u043e \u043f\u0443\u0441\u0442\u043e\u0439 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/cIcBLbsuYrMhOJQjchGihbideDl04qL4T8FlF5AEaH3bpf6I0GNghWDh9YkZb6RpgZb8dKix_nU6-gJWUuaZauzmFkmGnFkt1BbJRcwx_BenAVSHSu8yLt8HWXHSmEUNHh006-mh\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u041a\u0430\u043c\u0435\u0440\u0443 \u0436\u0435 \u044f \u043d\u0430\u0441\u0442\u0440\u043e\u044e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <code>Cinemachine<\/code>. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u044f \u043d\u0435 \u0431\u0443\u0434\u0443, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043b\u0438\u0448\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/p>\n\n\n\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u044f \u0441\u043e\u0437\u0434\u0430\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0441\u0442\u043e\u0439 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 <code>TT_demo_police<\/code> \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0433\u043e\u043b\u043e\u0432\u044b &#8212; \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u201c\u043f\u0440\u0438\u0446\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044f\u201d \u043a\u0430\u043c\u0435\u0440\u044b. \u041d\u0430\u0437\u043e\u0432\u0443 \u0435\u0433\u043e <code>CameraTarget<\/code>.<\/p>\n\n\n\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u0430\u043c\u0435\u0440\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0431\u0435\u0440\u0443 \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e <code>Cinemachine\u21e8Create Virtual Camera<\/code> (\u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u043d\u044e \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043b\u0438 \u0432\u044b \u043f\u0430\u043a\u0435\u0442 <code>Cinemachine<\/code>).<\/p>\n\n\n\n<p>\u0412 \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u0435 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044e <code>TT_demo_police<\/code> \u0432 \u043f\u043e\u043b\u0435 <code>Follow <\/code>\u0438 <code>CameraTarget<\/code> \u0432 \u043f\u043e\u043b\u0435 <code>Look At<\/code>. \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <code>Body<\/code> \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044e <code>Follow Offset<\/code> <code>X=0, Y=9, Z=-15<\/code> \u0438 <code>Yaw Damping<\/code> \u0432 <code>0.25<\/code>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%D0%A1%D1%82%D1%80%D0%B5%D0%BB%D1%8F%D0%B9_%D0%93%D0%BB%D0%B5%D0%B1_%D0%95%D0%B3%D0%BE%D1%80%D1%8B%D1%87\"><\/span>\u0421\u0442\u0440\u0435\u043b\u044f\u0439, \u0413\u043b\u0435\u0431 \u0415\u0433\u043e\u0440\u044b\u0447!<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u0411\u0435\u0433\u0430\u0442\u044c \u043f\u043e \u043a\u0430\u0440\u0442\u0435 &#8212; \u044d\u0442\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u043e. \u041d\u043e \u0448\u0443\u0442\u0435\u0440 \u043d\u0435 \u0431\u044b\u043b \u0431\u044b \u0448\u0443\u0442\u0435\u0440\u043e\u043c, \u0435\u0441\u043b\u0438 \u0431\u044b \u0442\u0430\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0441\u0442\u0440\u0435\u043b\u044f\u0442\u044c. \u0410 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0435\u043b\u044c\u0437\u044f. \u041d\u0443\u0436\u043d\u043e \u0441\u0440\u043e\u0447\u043d\u043e \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c!<\/p>\n\n\n\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0438\u0437 \u043a\u043e\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0443\u043b\u0430 \u043f\u0438\u0441\u0442\u043e\u043b\u0435\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u0443\u043b\u0438 \u0432\u044b\u043b\u0435\u0442\u0430\u043b\u0438 \u0447\u0435\u0442\u043a\u043e \u0438\u0437 \u043d\u0435\u0433\u043e (\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0443\u043b\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0435\u0433\u043a\u0430 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u0434 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438).<\/p>\n\n\n\n<p>\u0421\u0430\u043c \u043f\u0438\u0441\u0442\u043e\u043b\u0435\u0442 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d \u043a \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u043a\u0435\u043b\u0435\u0442\u0443 \u0438 \u0435\u0433\u043e \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>TT_demo_police<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/5nten5VkaSOG3dKJythK5c8E7767URPdHf6sEduo7TJTWA5AGJQHzVnk9nxKxN4ZXosMgGKnygKnko16a9eLtvXKC46ZfRMhYK291khKqX2qUYQMfhE162fkwUhB3vFJccaFixkP\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u042f \u0441\u043e\u0437\u0434\u0430\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0438\u0441\u0442\u043e\u043b\u0435\u0442\u0430 \u043f\u0443\u0441\u0442\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 (\u043d\u0430\u0437\u043e\u0432\u0443 \u0435\u0433\u043e GunHole) \u0438 \u0437\u0430\u0434\u0430\u043c \u0435\u043c\u0443 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (-0.1174, 0, 0.394) \u0438 \u043f\u043e\u0432\u043e\u0440\u043e\u0442 (0, 0, 90). \u042d\u0442\u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441 \u0434\u043b\u044f \u043a\u043e\u0434\u0430, \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0443\u043b\u0438.<\/p>\n\n\n\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0442\u0430\u043a \u043a\u0430\u043a <code>TT_demo_police<\/code> (\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442) \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 <code>ConvertToEntity<\/code> \u0441 \u0440\u0435\u0436\u0438\u043c\u043e\u043c <code>Convert And Inject Game Object<\/code>, \u044f \u043d\u0435 \u0441\u043c\u043e\u0433\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0441 \u043c\u043e\u0438\u043c \u0432\u043d\u043e\u0432\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, Unity \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u0442\u0430\u043a\u0443\u044e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.<\/p>\n\n\n\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u044f \u0441\u043e\u0437\u0434\u0430\u043c \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 <code>Shooter<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>Player<\/code> \u0438 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044e \u043a \u043d\u0435\u043c\u0443 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 <code>MonoBehaviour<\/code> (<code>Scripts\/Shooter.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\n \npublic class Shooter : MonoBehaviour\n{\n    public Transform gunHole;\n}\n<\/code><\/pre>\n\n\n\n<p>\u0418 \u043f\u0440\u043e\u043f\u0438\u0448\u0443 \u0432 \u043d\u0435\u0433\u043e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 <code>GunHole<\/code> \u0432 \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u0435.<\/p>\n\n\n\n<p>\u0410 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 <code>Shooter<\/code> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>TT_demo_police<\/code>, \u044f \u043c\u043e\u0433\u0443 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>ConvertToEntity<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/2xam_vKIuncNdAWCH0t7rov-Y96TW2tky9R72aJV-EajhcgVTkt-Lz9N0yAtAgvDymgpYY0Xq8qGkkQ8yIbIMuId-WkK49dk6cAYm7L0mYW65zxr6HWCBLzoqN-8uHytI4t_EpK9\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u041a\u0440\u043e\u043c\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u0443\u043b\u0430, \u043c\u043d\u0435 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438 \u043f\u0440\u0435\u0444\u0430\u0431 \u043f\u0443\u043b\u0438. \u0412 \u043f\u0440\u0435\u0444\u0430\u0431\u0430\u0445 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>ConvertToEntity<\/code> &#8212; \u0442\u0430\u043a\u0438\u0435 \u043f\u0440\u0435\u0444\u0430\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u044f\u0442\u0441\u044f \u0432 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0441 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c Prefab \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0438\u0433\u0440\u044b \u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0438\u0437 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u043e \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0438 \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b. \u0422\u0430\u043a\u0436\u0435, \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u043f\u0440\u0435\u0444\u0430\u0431\u0430\u043c\u0438, \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u0435\u0444\u0430\u0431\u043e\u0432-\u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u044d\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043c\u0435\u0442\u043e\u0434 Instantiate!<\/p>\n\n\n\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0441\u043e\u0437\u0434\u0430\u043c \u043f\u0440\u0435\u0444\u0430\u0431 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432: \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b <code>ConvertToEntity<\/code> \u0438 <code>PhysicsBody<\/code>, \u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 &#8212; \u043c\u0435\u0448 \u0438 \u043a\u043e\u043b\u043b\u0430\u0439\u0434\u0435\u0440 \u043a\u0430\u043f\u0441\u0443\u043b\u044b:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/2GkKdxIPnlpMIAqyqM48kczPmf5wy46L19lvrtOPECk5FFDD3ABxE6DYSgNLZR92SEKMbpefnBS3IyoOgWkEbpsEhNXd1zNtMW7ktI1sKuFl3bhGscGDAAVgRWpTf9Bqz1yhMZJZ\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u0418\u0437 \u0432\u0430\u0436\u043d\u043e\u0433\u043e: \u043a\u043e\u043b\u043b\u0430\u0439\u0434\u0435\u0440 \u0443 \u043f\u0443\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043a\u0430\u043a \u0442\u0440\u0438\u0433\u0433\u0435\u0440, \u0430 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b <code>PhysicsBody<\/code> \u0432\u043d\u0435\u0441\u0435\u043d\u044b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f: <code>Linear Damping<\/code> \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 0, \u0447\u0442\u043e\u0431\u044b \u043f\u0443\u043b\u044f \u043d\u0435 \u0442\u0435\u0440\u044f\u043b\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u0438 <code>Gravity Factor<\/code> \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 0.<\/p>\n\n\n\n<p>\u0412 \u043e\u0431\u044a\u0435\u043a\u0442 <code>Shooter<\/code> \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>BulletPrefabComponent<\/code> (<code>Scripts\/Components\/BulletPrefabComponent.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Unity.Entities;\n \n&#91;GenerateAuthoringComponent]\npublic struct BulletPrefabComponent : IComponentData\n{\n    public Entity prefab;\n    public float speed;\n}\n<\/code><\/pre>\n\n\n\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0440\u0435\u0444\u0430\u0431\u0443 \u0438\u0437 ECS-\u043a\u043e\u0434\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 &#8212; \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0443\u043b\u0438 (\u0441\u0440\u0430\u0437\u0443 \u043c\u043e\u0436\u043d\u043e \u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u0435, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 30).<\/p>\n\n\n\n<p>\u0418 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u044f \u0431\u0443\u0434\u0443 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u043f\u0443\u043b\u0438 (<code>Scripts\/Components\/Bullet.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Unity.Entities;\nusing Unity.Mathematics;\n \n&#91;GenerateAuthoringComponent]\npublic struct BulletComponent : IComponentData\n{\n    public float3 speed;\n    public bool destroyed;\n}\n<\/code><\/pre>\n\n\n\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>speed<\/code> \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u0443\u043b\u0438 \u0438 \u0435\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0430 \u0444\u043b\u0430\u0433 <code>destroyed<\/code> \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0443\u043b\u044c, \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0432\u0448\u0438\u0445\u0441\u044f \u0441 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0435\u043c. \u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u0438 \u043a\u0430\u043a \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u044f \u043e\u0431\u044a\u044f\u0441\u043d\u044e \u0447\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n\n\n\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043b\u044f \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u043e\u0432 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 (<code>Scripts\/Systems\/PlayerShootingSystem.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\nusing Unity.Entities;\nusing Unity.Transforms;\n \npublic class PlayerShootingSystem : ComponentSystem\n{\n    protected override void OnUpdate()\n    {\n        if (!Input.GetButtonDown(\"Fire1\"))\n            return;\n \n        Entities.ForEach((Entity entity, ref BulletPrefabComponent bulletPrefab) =&gt; {\n                var shooter = EntityManager.GetComponentObject&lt;Shooter&gt;(entity);\n                if (shooter == null)\n                    Debug.LogError(\"BulletPrefabComponent is missing Shooter component.\");\n                else {\n                    Entity bullet = EntityManager.Instantiate(bulletPrefab.prefab);\n                    EntityManager.SetComponentData(bullet, new Translation{ Value = shooter.gunHole.position });\n                    EntityManager.SetComponentData(bullet, new Rotation{ Value = shooter.gunHole.rotation });\n                    EntityManager.AddComponentData(bullet, new BulletComponent{ speed = shooter.gunHole.forward * bulletPrefab.speed });\n                }\n            });\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u0415\u0441\u043b\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0433\u0440\u0443, \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0435 \u043f\u0443\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/IcqTXr52egEHeGlWsqA12kdNQ3zxKtZKOSYtLGVo3EwJbMhXg35MtJRzy2s9dwrIx7EmTafBUGfExQ4XRKPRmlAkugpxNrTzVEDPN_0aNvLmiIc_dt7wmq9hyBL42PHDhdGkrtKj\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u041d\u043e \u043e\u043d\u0438 \u043d\u0435 \u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f! \u041a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c? \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e &#8212; \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 (<code>Scripts\/Systems\/BulletSystem.cs<\/code>):<\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Unity.Entities;\nusing Unity.Jobs;\nusing Unity.Physics;\n \npublic class BulletSystem : JobComponentSystem\n{\n    protected override JobHandle OnUpdate(JobHandle inputDeps)\n    {\n        JobHandle job = Entities.ForEach((ref BulletComponent bullet, ref PhysicsVelocity velocity) =&gt; {\n                velocity.Linear = bullet.speed;\n            }).Schedule(inputDeps);\n \n        return job;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0442\u0443\u0442 \u0432\u0441\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e: \u0437\u0430\u0434\u0430\u0435\u043c \u043f\u0443\u043b\u044f\u043c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043f\u0443\u0441\u0442\u044c \u0441\u0435\u0431\u0435 \u043b\u0435\u0442\u044f\u0442.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%D0%9E%D0%B6%D0%B8%D0%B2%D1%88%D0%B8%D0%B5_%D0%BC%D0%B5%D1%80%D1%82%D0%B2%D0%B5%D1%86%D1%8B\"><\/span>\u041e\u0436\u0438\u0432\u0448\u0438\u0435 \u043c\u0435\u0440\u0442\u0432\u0435\u0446\u044b<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u0417\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0443\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c. \u041d\u043e \u0441\u0442\u0440\u0435\u043b\u044f\u0442\u044c \u043f\u043e\u043a\u0430 \u043d\u0435 \u0432 \u043a\u043e\u0433\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0437\u043e\u043c\u0431\u0438!&nbsp;<\/p>\n\n\n\n<p>\u042f \u0441\u043e\u0437\u0434\u0430\u043c \u0432 \u043a\u043e\u0440\u043d\u0435 \u0441\u0446\u0435\u043d\u044b \u043f\u0443\u0441\u0442\u043e\u0439 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 <code>Zombie<\/code> \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u044e \u0435\u0433\u043e \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0433\u0435\u0440\u043e\u0435\u043c. \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u043b\u043e\u0436\u0443 \u0432\u043d\u0443\u0442\u0440\u044c \u043f\u0440\u0435\u0444\u0430\u0431 <code>TT_demo\/prefabs\/TT_demo_zombie<\/code>. \u0422\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043c \u043a\u0430\u043f\u0441\u0443\u043b\u0443 (<code>Position 0, 1, 0<\/code>) \u0438 \u0441\u0440\u0430\u0437\u0443 \u043e\u0442\u043a\u043b\u044e\u0447\u0443 \u0443 \u043d\u0435\u0435 <code>MeshRenderer<\/code>. \u0412 \u0441\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442 <code>Zombie<\/code> \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b <code>PhysicsBody<\/code>, <code>FreezeVerticalRotationComponent<\/code>, <code>AnimatedCharacterComponent<\/code> \u0438 <code>ConvertToEntity<\/code>. \u0422\u0430\u043a\u0436\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>ConvertToEntity<\/code> \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 <code>TT_demo_zombie<\/code>, \u0443\u043a\u0430\u0437\u0430\u0432 \u0440\u0435\u0436\u0438\u043c <code>Convert And Inject Game Object<\/code>. \u0422\u0443\u0434\u0430 \u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 <code>CopyTransformComponent<\/code>. \u0423 <code>PhysicsBody<\/code> \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044e <code>Mass=70<\/code>. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>Player<\/code>, \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0435\u0437 <code>Shooter<\/code>.<\/p>\n\n\n\n<p>\u041f\u0440\u0438\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u044b. \u041d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u043b\u044f \u0437\u043e\u043c\u0431\u0438.<\/p>\n\n\n\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0440\u0430\u0433\u0443 \u0436\u0438\u0437\u043d\u0438 (<code>Scripts\/Components\/HealthComponent.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Unity.Entities;\n \n&#91;GenerateAuthoringComponent]\npublic struct HealthComponent : IComponentData\n{\n    public int value;\n}\n<\/code><\/pre>\n\n\n\n<p>\u0418 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 (<code>Scripts\/Components\/AnimatedCharacterDeathSystem.cs<\/code>), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u044b\u0433\u0440\u044b\u0432\u0430\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u0441\u043c\u0435\u0440\u0442\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430, \u043a\u043e\u0433\u0434\u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0436\u0438\u0437\u043d\u0435\u0439 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0435\u0442 0:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\nusing Unity.Entities;\nusing Unity.Mathematics;\nusing Unity.Physics;\n \npublic class AnimatedCharacterDeathSystem : ComponentSystem\n{\n    protected override void OnUpdate()\n    {\n        Entities.ForEach((Entity entity, ref AnimatedCharacterComponent character, ref HealthComponent health) =&gt; {\n                var animator = EntityManager.GetComponentObject&lt;Animator&gt;(character.animatorEntity);\n                if (health.value &lt;= 0) {\n                    animator.SetTrigger(\"die\");\n                    EntityManager.RemoveComponent&lt;HealthComponent&gt;(entity);\n                }\n            });\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u0437\u043e\u043c\u0431\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>HealthComponent<\/code> \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0436\u0438\u0437\u043d\u0435\u0439 0 \u0438 \u0437\u0430\u043f\u0443\u0449\u0443 \u0438\u0433\u0440\u0443. \u0417\u043e\u043c\u0431\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0440\u0430\u0437\u0443 \u0443\u043c\u0435\u0440\u0435\u0442\u044c:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/t7sTiLwjqNe2sFWeBgRQnlAQzKx5LRP8rv9BHC_OdQX-ryLs2Y_wPpX8Bz7hHgtu_4BWPECe5SpO8fp0nrd_n-DVhsDgC7yrxVdMUpzr4JSHHT76M4K-VYWxsT3BBVmkiycOQ9Jy\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<p>\u041f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u043d\u043e, \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442! \u041f\u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0437\u043e\u043c\u0431\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 3 \u0436\u0438\u0437\u043d\u0438 \u0438 \u0437\u0430\u0439\u043c\u0443\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043f\u0443\u043b\u0438 \u0438 \u0432\u0440\u0430\u0433\u0430.<\/p>\n\n\n\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 (<code>Scripts\/Systems\/BulletDamageSystem.cs<\/code>). \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043d\u0435\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Unity.Collections;\nusing Unity.Entities;\nusing Unity.Jobs;\nusing Unity.Physics.Systems;\nusing Unity.Physics;\n \npublic class CollisionEventSystem : JobComponentSystem\n{\n    struct CollisionEventSystemJob : ITriggerEventsJob\n    {\n        public ComponentDataFromEntity&lt;BulletComponent&gt; bulletRef;\n        public ComponentDataFromEntity&lt;HealthComponent&gt; healthRef;\n \n        public void Execute(TriggerEvent triggerEvent)\n        {\n            Entity hitEntity, bulletEntity;\n            if (bulletRef.HasComponent(triggerEvent.EntityA)) {\n                hitEntity = triggerEvent.EntityB;\n                bulletEntity = triggerEvent.EntityA;\n            } else if (bulletRef.HasComponent(triggerEvent.EntityB)) {\n                hitEntity = triggerEvent.EntityA;\n                bulletEntity = triggerEvent.EntityB;\n            } else\n                return;\n \n            var bullet = bulletRef&#91;bulletEntity];\n            bullet.destroyed = true;\n            bulletRef&#91;bulletEntity] = bullet;\n \n            if (healthRef.HasComponent(hitEntity)) {\n                var health = healthRef&#91;hitEntity];\n                health.value--;\n                healthRef&#91;hitEntity] = health;\n            }\n        }\n    }\n \n    BuildPhysicsWorld buildPhysicsWorldSystem;\n    StepPhysicsWorld stepPhysicsWorld;\n    EndSimulationEntityCommandBufferSystem endSimulationCommandBuffer;\n \n    protected override void OnCreate()\n    {\n        buildPhysicsWorldSystem = World.GetOrCreateSystem&lt;BuildPhysicsWorld&gt;();\n        stepPhysicsWorld = World.GetOrCreateSystem&lt;StepPhysicsWorld&gt;();\n        endSimulationCommandBuffer = World.GetOrCreateSystem&lt;EndSimulationEntityCommandBufferSystem&gt;();\n    }\n \n    protected override JobHandle OnUpdate(JobHandle inputDeps)\n    {\n        var job = new CollisionEventSystemJob();\n        job.bulletRef = GetComponentDataFromEntity&lt;BulletComponent&gt;(isReadOnly: false);\n        job.healthRef = GetComponentDataFromEntity&lt;HealthComponent&gt;(isReadOnly: false);\n        var jobResult = job.Schedule(stepPhysicsWorld.Simulation, ref buildPhysicsWorldSystem.PhysicsWorld, inputDeps);\n \n        var commandBuffer = endSimulationCommandBuffer.CreateCommandBuffer().AsParallelWriter();\n        var result = Entities.ForEach((Entity entity, int entityInQueryIndex, ref BulletComponent bullet) =&gt; {\n                if (bullet.destroyed)\n                    commandBuffer.DestroyEntity(entityInQueryIndex, entity);\n            }).Schedule(jobResult);\n \n        endSimulationCommandBuffer.AddJobHandleForProducer(result);\n        return result;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u041f\u0435\u0440\u0432\u0430\u044f (\u0438 \u0432\u0435\u0441\u044c\u043c\u0430 \u0432\u0430\u0436\u043d\u0430\u044f) \u0447\u0430\u0441\u0442\u044c &#8212; \u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code>CollisionEventSystemJob<\/code>. \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0443 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b <code>Job System<\/code>. \u0412 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438. \u041a\u043e\u0434 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>Execute<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0432\u0448\u0438\u0445\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>BulletComponent<\/code>. \u0415\u0441\u043b\u0438, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043e\u0434\u0438\u043d \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 &#8212; \u043f\u0443\u043b\u044f, \u0442\u043e \u0435\u0439 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u043b\u0430\u0436\u043e\u043a <code>destroy<\/code>, \u0430 \u0443 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432\u044b\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0436\u0438\u0437\u043d\u0438 (\u0435\u0441\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442; \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u0441 \u0434\u0435\u0440\u0435\u0432\u043e\u043c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043a \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0438\u044e \u043f\u0443\u043b\u0438).<\/p>\n\n\n\n<p>\u0421\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0432\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430: \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043a\u043b\u0430\u0441\u0441 <code>ComponentDataFromEntity<\/code>. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0438 \u0434\u0432\u0438\u0436\u043e\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c \u0438 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u043e \u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u043d\u0435\u043b\u044c\u0437\u044f \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0442\u044c \u043f\u0443\u043b\u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e, \u0443 \u043f\u0443\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u043b\u0430\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0443\u0436\u0435 \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438, \u0433\u0434\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d.<\/p>\n\n\n\n<p>\u0412 \u043c\u0435\u0442\u043e\u0434\u0435 <code>OnUpdate<\/code> \u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0448\u0443 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f\u0445 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e \u0435\u0435 \u0432 <code>CollisionEventSystemJob<\/code> \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430, \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e \u0431\u044b\u043b\u0438 \u043b\u0438 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u044b \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0443\u043b\u0438 \u0438 \u0435\u0441\u043b\u0438 \u0431\u044b\u043b\u0438, \u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u044e \u0438\u0445 \u0432 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u0434\u043b\u044f \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%D0%91%D0%B5%D0%B3%D0%B8_%D0%9B%D0%BE%D0%BB%D0%B0_%D0%91%D0%B5%D0%B3%D0%B8\"><\/span>\u0411\u0435\u0433\u0438, \u041b\u043e\u043b\u0430, \u0411\u0435\u0433\u0438!<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0430\u0436\u043d\u0430\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0438 \u0432\u0440\u0430\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435 \u0435\u0449\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 &#8212; \u044d\u0442\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043e\u0445\u043e\u0442\u0443 \u043d\u0430 \u0438\u0433\u0440\u043e\u043a\u0430!<\/p>\n\n\n\n<p>\u0414\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0443\u0442\u0438 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e <code>NavMesh<\/code>. \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0439 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u0441\u043a\u0430\u0436\u0443 \u043b\u0438\u0448\u044c, \u0447\u0442\u043e \u0437\u0430\u043f\u0435\u0447\u044c <code>NavMesh<\/code> \u043c\u043e\u0436\u043d\u043e \u0432 \u043e\u043a\u043d\u0435 <code>Navigation<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e <code>Window\u21e8AI\u21e8Navigation<\/code>.<\/p>\n\n\n\n<p>\u042f \u0441\u043e\u0437\u0434\u0430\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>Zombie<\/code> \u043f\u0443\u0441\u0442\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 <code>NavMeshAgent<\/code> \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u0432 \u043d\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>NavMeshAgent<\/code>. \u0422\u0430\u043a\u0436\u0435 \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>ConvertToEntity<\/code> \u0441 \u0440\u0435\u0436\u0438\u043c\u043e\u043c <code>Convert And Inject Game Object<\/code>.<\/p>\n\n\n\n<p>\u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u044d\u0442\u043e\u043c\u0443, \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <code>NavMeshAgentComponent<\/code> (<code>Scripts\/Components\/NavMeshAgentComponent.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Unity.Entities;\n \n&#91;GenerateAuthoringComponent]\npublic struct NavMeshAgentComponent : IComponentData\n{\n    public Entity moveEntity;\n}\n<\/code><\/pre>\n\n\n\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0434\u0435\u0441\u044c &#8212; \u044d\u0442\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044d\u0442\u043e\u0442 <code>NavMeshAgent<\/code> \u0431\u0443\u0434\u0435\u0442 \u0434\u0432\u0438\u0433\u0430\u0442\u044c. \u0414\u043e\u0431\u0430\u0432\u0438\u0432 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 <code>NavMeshAgent<\/code>, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <code>moveEntity<\/code> \u044f \u0443\u043a\u0430\u0436\u0443 \u043e\u0431\u044a\u0435\u043a\u0442 <code>Zombie<\/code>.<\/p>\n\n\n\n<p>\u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 (<code>Scripts\/Components\/FollowTargetComponent.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using Unity.Entities;\n \n&#91;GenerateAuthoringComponent]\npublic struct FollowTargetComponent : IComponentData\n{\n}\n<\/code><\/pre>\n\n\n\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a \u043c\u0430\u0440\u043a\u0435\u0440: \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0430\u0433\u0438, \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u043e\u043a\u0430.<\/p>\n\n\n\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0448\u0442\u0440\u0438\u0445\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (<code>Scripts\/Systems\/FollowPlayerSystem.cs<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\nusing UnityEngine.AI;\nusing Unity.Entities;\nusing Unity.Mathematics;\nusing Unity.Transforms;\n \npublic class FollowPlayerSystem : ComponentSystem\n{\n    protected override void OnUpdate()\n    {\n        float3 targetPosition = float3.zero;\n        Entities.ForEach((Entity entity, ref LocalToWorld transform, ref FollowTargetComponent tag) =&gt; {\n                targetPosition = transform.Position;\n            });\n \n        Entities.ForEach((Entity entity, ref NavMeshAgentComponent agent) =&gt; {\n                var navMeshAgent = EntityManager.GetComponentObject&lt;NavMeshAgent&gt;(entity);\n                if (navMeshAgent != null) {\n                    navMeshAgent.SetDestination(targetPosition);\n                    EntityManager.SetComponentData(agent.moveEntity, new Translation{ Value = navMeshAgent.transform.position });\n                }\n            });\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/2LPbPGMn-9umw-5SMPyw2Z_85m_DKxUI8GgDqkBG3SPC997gycruiTsaOBRsGnKmS-g9scaN2A6XWeIWDBSCAO9J2_vkOF-FaeMrA1fC3FhuLU9ILkc0bDNl9_2xYmvMFICohahH\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%D0%9A%D0%BE%D0%BD%D0%B5%D1%86\"><\/span>\u041a\u043e\u043d\u0435\u0446<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 DOTS \u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u043c ECS. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0441 \u044d\u0442\u0438\u043c\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438 \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0438\u0433\u0440\u043e\u0432\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435.<\/p>\n\n\n\n<p>\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0441 GitHub: <a href=\"https:\/\/github.com\/zapolnov\/dots-zombie-shooter\">https:\/\/github.com\/zapolnov\/dots-zombie-shooter<\/a><\/p>\n\n\n\n<p>\u0416\u0435\u043b\u0430\u044e \u0443\u0434\u0430\u0447\u0438 \u0432 \u0432\u0430\u0448\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445!<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/otus.ru\/lessons\/unity-professional\/?utm_source=oj&amp;utm_medium=affilate&amp;utm_campaign=unitypro\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"970\" height=\"90\" src=\"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya.jpg\" alt=\"\u0417\u043e\u043c\u0431\u0438-\u0448\u0443\u0442\u0435\u0440 \u043d\u0430 DOTS \u0432 Unity\" class=\"wp-image-7658\" srcset=\"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya.jpg 970w, https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya-300x28.jpg 300w, https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya-150x14.jpg 150w, https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/10\/unity_Welcome_970x90-kopiya-768x71.jpg 768w\" sizes=\"auto, (max-width: 970px) 100vw, 970px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0417\u0430\u043f\u043e\u043b\u044c\u043d\u043e\u0432, \u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043a\u0443\u0440\u0441\u0430\u0445 Unity Basic \u0438 Unity Pro \u0432 OTUS. \u0418 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u043f\u0440\u043e, \u0431\u0435\u0437 \u043f\u0440\u0435\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f, \u0431\u0443\u0434\u0443\u0449\u0435\u0435 Unity &#8212; \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e DOTS. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 \u044d\u0442\u043e\u0442 DOTS, \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043e\u043d \u0440\u0435\u0448\u0430\u0435\u0442 \u0438 \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u041d\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u0432\u0441\u0435 \u0436\u0435,<\/p>\n","protected":false},"author":9,"featured_media":491,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[25,24,26],"class_list":{"0":"post-227","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-polza","8":"tag-gamedev","9":"tag-unity","10":"tag-urok"},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/posts\/227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/comments?post=227"}],"version-history":[{"count":3,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/posts\/227\/revisions"}],"predecessor-version":[{"id":7660,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/posts\/227\/revisions\/7660"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/media\/491"}],"wp:attachment":[{"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/media?parent=227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/categories?post=227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/tags?post=227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}