{"id":847,"date":"2022-11-28T16:45:18","date_gmt":"2022-11-28T16:45:18","guid":{"rendered":"https:\/\/globalgoodplay.com\/?p=847"},"modified":"2023-04-13T08:49:26","modified_gmt":"2023-04-13T08:49:26","slug":"unreal-engine-5-fps-create-a-zombie-horde-shooter","status":"publish","type":"post","link":"https:\/\/globalgoodplay.com\/?p=847","title":{"rendered":"Unreal Engine 5 FPS: Create A Zombie Horde Shooter"},"content":{"rendered":"<div class=\"elementor elementor-32321\" data-elementor-type=\"wp-post\" data-elementor-id=\"32321\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4163e06 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4163e06\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-41b590b\" data-id=\"41b590b\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-9c487db elementor-widget elementor-widget-text-editor\" data-id=\"9c487db\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In this tutorial you\u2019ll create a zombie horde shooter game with Unreal Engine 5 using blueprints.<\/p>\n<p>The game is simple but is packed with tons of behind the scenes features that will allow you to understand the \u201cwhy\u201d behind the \u201chow\u201d a game is created in Unreal Engine 5.<\/p>\n<p>Here\u2019s a short preview of the game that we\u2019ll create:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2e9d261 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"2e9d261\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-88de45c elementor-widget elementor-widget-template\" data-id=\"88de45c\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor313798<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor313798 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor313798 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor313798\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a39599b elementor-widget elementor-widget-heading\" data-id=\"a39599b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Download The Assets And Complete Project For This Tutorial<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-76d7832 elementor-widget elementor-widget-button\" data-id=\"76d7832\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-button-wrapper\"><a class=\"elementor-button-link elementor-button elementor-size-sm\" role=\"button\" href=\"https:\/\/cdn.fs.teachablecdn.com\/RSVO7hn1QUwSNY4TzcPm\"><br \/>\n<span class=\"elementor-button-content-wrapper\"><br \/>\n<span class=\"elementor-button-text\">Download The Assets<\/span><br \/>\n<\/span><br \/>\n<\/a><\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-61cbafb elementor-widget elementor-widget-text-editor\" data-id=\"61cbafb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can download the assets and the complete project for this tutorial by clicking on the button above.<\/p>\n<p>In the downloaded files you\u2019ll find assets to follow with this tutorial and the complete project you can use as a reference to inspect the code.<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-288e53b elementor-widget elementor-widget-heading\" data-id=\"288e53b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Important Information Before We Start<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ad2716b elementor-widget elementor-widget-text-editor\" data-id=\"ad2716b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This tutorial is for beginners as well as intermediate developers. However, it\u2019s not meant for complete beginners who never created even a simple game in Unreal Engine.<\/p>\n<p>We expect you to know your way around Unreal Engine and its interface. We also expect that you know the basics and a little above basics of working with blueprints.<\/p>\n<p>If you\u2019re a complete beginner, we recommend that you first go through our Parasite Platformer tutorial which will allow you to understand all the basics of creating a game in Unreal Engine. The link to the tutorial is below:<\/p>\n<p>Create A Parasite Platformer Game In Unreal Engine<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b121630 elementor-widget elementor-widget-heading\" data-id=\"b121630\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Creating The Project<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-dbc96b1 elementor-widget elementor-widget-text-editor\" data-id=\"dbc96b1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Open your Unreal Engine 5 editor and select games on the left side:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4008d5c elementor-widget elementor-widget-image\" data-id=\"4008d5c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"1 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/9c6cf2678155030b2277a6c13ac904e2575be6d2cacca2b71d308fd763a036cd.jpeg\" alt=\"1 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e730859 elementor-widget elementor-widget-text-editor\" data-id=\"e730859\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the next window select ThirdPerson project, Blueprints, give the project a name and press the Create button:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8596253 elementor-widget elementor-widget-image\" data-id=\"8596253\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"2 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/76fc80e02a4694c00698c5c80c9712d8dfd465172c81668a0c9c1301e39f63b6.jpeg\" alt=\"2 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-caee689 elementor-widget elementor-widget-heading\" data-id=\"caee689\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Importing Assets<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-667ed2b elementor-widget elementor-widget-text-editor\" data-id=\"667ed2b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Unzip and open the assets folder that you downloaded by pressing the green button above.<\/p>\n<p>Inside you\u2019ll find 3 folders:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-dd56900 elementor-widget elementor-widget-image\" data-id=\"dd56900\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"3 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/6103b9c03688429488e49c565676c80da665e0bc7b3a3f4281ff15ad5bee752e.jpeg\" alt=\"3 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-28c7db4 elementor-widget elementor-widget-text-editor\" data-id=\"28c7db4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Open the folder with the name\u00a0<b>ThirdPersonForAnim<\/b>. The\u00a0ThirdPersonForAnim is actually an Unreal Engine project, and you\u2019ll need Unreal Engine version 4.22 to open it.<\/p>\n<p>In case you don\u2019t know how to check with which engine version the project is created, simply Right Click on the .uproject icon, then under Open With select Notepad:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8b025a7 elementor-widget elementor-widget-image\" data-id=\"8b025a7\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"4 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/4340cb47266bd2ce9c95640561575aa1ac0001373a27a6219a0486775a019db5.jpeg\" alt=\"4 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-40abea1 elementor-widget elementor-widget-text-editor\" data-id=\"40abea1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The EngineAssociation inside the notepad will indicate the Unreal Engine version with which the particular project is created:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7278e11 elementor-widget elementor-widget-image\" data-id=\"7278e11\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"5 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/406e91fe010162bb74ac8d4f6b39abab5df44a15d14dda6a5605dfca2e5f3b2e.jpeg\" alt=\"5 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-642bbea elementor-widget elementor-widget-text-editor\" data-id=\"642bbea\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When you open the project, select the Art folder then Right Click on it and select Migrate:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2143d28 elementor-widget elementor-widget-image\" data-id=\"2143d28\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"7 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/086f7d4b35ba5ff7dd7449bde2c35cb8734dfc27204da6242136f838fd66f561.jpeg\" alt=\"7 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9dbc4f1 elementor-widget elementor-widget-text-editor\" data-id=\"9dbc4f1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>A new window called Asset Report will open. Inside that window select the Art folder again, and press Ok:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ea3f64f elementor-widget elementor-widget-image\" data-id=\"ea3f64f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"8 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/98cf76a4dc1013dac21b2046d5420fe207e3410accc7cc770aaa75b2c387b694.jpeg\" alt=\"8 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-59867c4 elementor-widget elementor-widget-text-editor\" data-id=\"59867c4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>A new window will open prompting you to choose a destination where the select folder, in this case Art folder, will be migrated.<\/p>\n<p>Since we\u2019re going to use the assets in the Art folder inside our new FPS Zombie Horde project, locate the folder where you stored your FPS Zombie Horde project.<\/p>\n<p>Mine is located in the Downloads folder:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-05b75a7 elementor-widget elementor-widget-image\" data-id=\"05b75a7\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"9 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/7aef58b9d9eb5a529b29b01b5a379d4bf33de1261bcb11fe2a18d9cd4e9dfe06.jpeg\" alt=\"9 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b39a318 elementor-widget elementor-widget-text-editor\" data-id=\"b39a318\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>From there, select the Content folder and the press the Select Folder button:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9ffb4e3 elementor-widget elementor-widget-image\" data-id=\"9ffb4e3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"10 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/6c21898bb64044e47a5380d30ba3c4343d8fab1fc59a2db8775edd7b45a461c4.jpeg\" alt=\"10 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a3e087a elementor-widget elementor-widget-text-editor\" data-id=\"a3e087a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the new window that appears press the Yes To All button:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f1c2e36 elementor-widget elementor-widget-image\" data-id=\"f1c2e36\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"11 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/758f97e39d172bd8bcdbc920473c4e044fb39e7ee287b24568c0c3c82c2cc911.jpeg\" alt=\"11 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4f60d0d elementor-widget elementor-widget-text-editor\" data-id=\"4f60d0d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This will copy all the files from the Art folder in the ThirdPersonForAnim project, and paste them inside our FPS Zombie Horde project in Unreal Engine 5:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e3b794a elementor-widget elementor-widget-image\" data-id=\"e3b794a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"12 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/944087822904ae53854c977c9faf93de3797b4c49751edfd1e8617a391d0a87c.jpeg\" alt=\"12 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3a76a08 elementor-widget elementor-widget-text-editor\" data-id=\"3a76a08\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can always use this method to transfer files from one Unreal Engine project to another.<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-48d44dd elementor-widget elementor-widget-template\" data-id=\"48d44dd\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor328433<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor328433 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor328433 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor328433\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bc32040 elementor-widget elementor-widget-heading\" data-id=\"bc32040\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Creating Our Custom Player Character<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d38346d elementor-widget elementor-widget-text-editor\" data-id=\"d38346d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside the Content browser I\u2019ve created a new folder and named it FPS_ZombieHorde:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ad5bbbf elementor-widget elementor-widget-image\" data-id=\"ad5bbbf\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"13 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/46f46cc6da02f474212049b9a9e76a8a738bdb43ac5bc6903bf59eabca784ac2.jpeg\" alt=\"13 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4ec4d6f elementor-widget elementor-widget-text-editor\" data-id=\"4ec4d6f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside this folder we\u2019ll store everything we create for our game project. We\u2019ll start with the Player_Character folder:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e592383 elementor-widget elementor-widget-image\" data-id=\"e592383\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"14 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/1056988c9ecb72192bb55d965bfb393502dd6ff266460d04f3be37b8e17faaa4.jpeg\" alt=\"14 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-236b8f9 elementor-widget elementor-widget-text-editor\" data-id=\"236b8f9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside the Player_Character folder Right Click and create a new blueprint:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b0e5909 elementor-widget elementor-widget-image\" data-id=\"b0e5909\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"15 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3faeef9af892c9e2196c9cb82f6bd9b21420f6d17a21c768927455cffd4e7a9c.jpeg\" alt=\"15 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a39896d elementor-widget elementor-widget-text-editor\" data-id=\"a39896d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The parent class is going to be Character:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3574a48 elementor-widget elementor-widget-image\" data-id=\"3574a48\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"16 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0b3337a8af4f29a8672ac1f81204535336d41b1a6b86b3fb8de6cb8d32430473.jpeg\" alt=\"16 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9ad32ac elementor-widget elementor-widget-text-editor\" data-id=\"9ad32ac\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Name the blueprint BP_Player and open it in the editor window. Inside the BP_Player editor, click on the mesh component in the Component tab at the top right corner:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-832c021 elementor-widget elementor-widget-image\" data-id=\"832c021\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"17 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e556fd8d83c5b788e74248986d9b73bd6af59711658f2979a844da83e5699f2a.jpeg\" alt=\"17 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1f9a713 elementor-widget elementor-widget-text-editor\" data-id=\"1f9a713\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now inside the Details tab on the right side, under the Mesh option for the Skeletal Mesh 3D object we are going to select the Mannequin 3D object:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a56793e elementor-widget elementor-widget-image\" data-id=\"a56793e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"18 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/5a957992ce677e3e181d289a0ca60f0089372c5d1b9d9ed31365d7b7dc9ba3ed.jpeg\" alt=\"18 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-acdc211 elementor-widget elementor-widget-text-editor\" data-id=\"acdc211\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>But make sure that you select the one which is located in the Art folder. And you can know that by hover over the Mannequin 3D object and check the path where the model is stored:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-dba90f6 elementor-widget elementor-widget-image\" data-id=\"dba90f6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"19 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/6c7a903ecb17e94dc3710c8ece7ea5ae3d7594c9f54fb32e2f7a13e8c823dd28.jpeg\" alt=\"19 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d3fc195 elementor-widget elementor-widget-text-editor\" data-id=\"d3fc195\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When you select the Mannequin model, set the following values in his transform options:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1b396ee elementor-widget elementor-widget-image\" data-id=\"1b396ee\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"20 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ec34fc2ab0164114daf48d2dd3f3f0ab00496f1eb3b8253667e4aa3992944745.jpeg\" alt=\"20 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-312775e elementor-widget elementor-widget-text-editor\" data-id=\"312775e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The location Z and rotation Z values we change are just going to move the character down and rotate him so that he faces the forward direction within his Capsule component:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2ca7658 elementor-widget elementor-widget-image\" data-id=\"2ca7658\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"21 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0c714c04ee18c523a13e07ed969b700435c49bf86265d8d6565e1a57a1ab5d61.jpeg\" alt=\"21 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6850ad9 elementor-widget elementor-widget-text-editor\" data-id=\"6850ad9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We\u2019re also going to resize his Capsule component by setting the radius to 17:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-14da9fe elementor-widget elementor-widget-image\" data-id=\"14da9fe\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"22 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f8909a67e602285a25615256cc60a149746a65091d90345863fc9e0ab826ea94.jpeg\" alt=\"22 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8370bd5 elementor-widget elementor-widget-text-editor\" data-id=\"8370bd5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Next, inside the Component tab click on the Add button and filter for Spring Arm:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-09f49d0 elementor-widget elementor-widget-image\" data-id=\"09f49d0\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"23 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ae488735835387dfa312ea39d2053ccb560b7e8af4d43b810422e39d1a02d58e.jpeg\" alt=\"23 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-473e3ae elementor-widget elementor-widget-text-editor\" data-id=\"473e3ae\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Rename the Spring Arm component to Camera Arm and it\u2019s Z location to 48:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-aebacdd elementor-widget elementor-widget-image\" data-id=\"aebacdd\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"24 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/a4a387d24806523c4f2e8f6e55ead244b6fc719ee01ded0c845664931ff6bb97.jpeg\" alt=\"24 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-33e193a elementor-widget elementor-widget-text-editor\" data-id=\"33e193a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This is going to move the Spring Arm component up. Now select the Camera Arm component, click on the Add button and attach a Camera component:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9bef59f elementor-widget elementor-widget-image\" data-id=\"9bef59f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"25 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e7ad59c44b0909b568e480c33473283fe8ce5942a6ffe02f3d5602a2fb83d3ef.jpeg\" alt=\"25 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-266644d elementor-widget elementor-widget-text-editor\" data-id=\"266644d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Save and compile the changes by pressing the Save then Compile button at the top left corner:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d5c9f15 elementor-widget elementor-widget-image\" data-id=\"d5c9f15\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"26 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/a88597f36ecabf5d0e0986bfac7c422f8c47d6cb34b36c84ef723485e5718191.jpeg\" alt=\"26 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4c78ed6 elementor-widget elementor-widget-text-editor\" data-id=\"4c78ed6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now we\u2019re going to go under Edit -&gt; Project Settings:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e84161f elementor-widget elementor-widget-image\" data-id=\"e84161f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"27 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b14b9a93e74474f5493f2e1d51ba093fd06ea8d4f66058db6e4ccdafa121ec41.jpeg\" alt=\"27 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f0ef7ef elementor-widget elementor-widget-text-editor\" data-id=\"f0ef7ef\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Under Project -&gt; Maps &amp; Modes we are going to change the Default Pawn class to our BP_Player:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-23ff54a elementor-widget elementor-widget-image\" data-id=\"23ff54a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"28 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f6cc62890c46ccbfefe07630ffbab5dfbce28747019d0dbd39ffbde80e925bd4.jpeg\" alt=\"28 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a889e6b elementor-widget elementor-widget-text-editor\" data-id=\"a889e6b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When we press the Play button we now see our player in the gameplay world:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8613f76 elementor-widget elementor-widget-image\" data-id=\"8613f76\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"29 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e6709fb2af4b01e174c2e1faeebc93b5b6167f227ff8fadef1b227a9ca3de126.jpeg\" alt=\"29 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0a45c11 elementor-widget elementor-widget-heading\" data-id=\"0a45c11\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Introduction To Enhanced Input \u2013 New Unreal Engine Input System<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5ebca37 elementor-widget elementor-widget-text-editor\" data-id=\"5ebca37\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To move our character we are going to use the new Enhanced Input that Unreal introduced.<\/p>\n<p>If you followed all the steps to create the project as we did, you should already have ehanced input in your project, and you can easily check that by going under Edit -&gt; Plugins:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bafbff3 elementor-widget elementor-widget-image\" data-id=\"bafbff3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"30 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/09177d5f5f30600acebbb27822e7c4c83b374a5b74fcddf405fa69618b1cdab1.jpeg\" alt=\"30 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ad6759d elementor-widget elementor-widget-text-editor\" data-id=\"ad6759d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the search type \u201cenhanced input:\u201d<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0ec000e elementor-widget elementor-widget-image\" data-id=\"0ec000e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"31 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/dc1441b8a459eff9652e847d1c21bda1c890301779d8baf317eaf4541c2f9581.jpeg\" alt=\"31 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-acedb3a elementor-widget elementor-widget-text-editor\" data-id=\"acedb3a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>If the checkbox is checked like in the image above then you\u2019re good to go, if not, enable the enhanced input plugin by checking the checkbox and then you\u2019ll be promted to restart Unreal Engine for the changes to take effect.<\/p>\n<p>Also make sure that under Project Settings -&gt; Input -&gt; Default Classes the Default Player Input class is set to EnhancedPlayerInput and the DefaultInputComponentClass is set to EnhancedInputComponent:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-180717f elementor-widget elementor-widget-image\" data-id=\"180717f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"32 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ed4aed07b0c7c815e0a5b5ed04f811c6404c3c83ff6209d75e662be28b797a63.jpeg\" alt=\"32 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7698b22 elementor-widget elementor-widget-text-editor\" data-id=\"7698b22\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Essentially what\u2019s the deal with the new EnhancedInput is that Unreal Engine gave us full control over the input system. The options we have now were part of the engine for a long time but they were not easily accessible as they are now.<\/p>\n<p>That being said, since we\u2019re given full control of the input system we are the ones who need to define that system and how we want to use it.<\/p>\n<p>So, if we want to move the game character left and right, we need to define an Input Action and give it values so that we can use them in the blueprint to move the player. And the same goes for the rotation of the player using the mouse.<\/p>\n<p>We\u2019re going to start by defining the Input Action for the movement. Inside the FPS_ZombieHorde folder Right Click and create a new folder and name it Input.<\/p>\n<p>Inside the Input folder Right Click -&gt; Input Action:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7575782 elementor-widget elementor-widget-image\" data-id=\"7575782\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"33 \u2013 Zombie horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d2b686a676a4000d9529818022ee0ebdd8f898d2fd381261aaffe2b8dc36610e.jpeg\" alt=\"33 - Zombie horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2d05ad7 elementor-widget elementor-widget-text-editor\" data-id=\"2d05ad7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Rename the input action to IA_MoveForward:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1bc0ec2 elementor-widget elementor-widget-image\" data-id=\"1bc0ec2\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"34 \u2013 Zombie horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0b02ea28e7393f79ae75c58f981e4da8c6b21b44240d1997f3243c7bf129e853.jpeg\" alt=\"34 - Zombie horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2d29397 elementor-widget elementor-widget-text-editor\" data-id=\"2d29397\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Double click the IA_MoveForward and these are the options you\u2019ll see when you open it in the editor:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2517bc4 elementor-widget elementor-widget-image\" data-id=\"2517bc4\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"35 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/359a54638f08cfc590a60af5bd2340d0033c1fdf755128df2e9495009126c64a.jpeg\" alt=\"35 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bf05c20 elementor-widget elementor-widget-text-editor\" data-id=\"bf05c20\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The Action Description option allows us to give a description to the input action we created, for this one we can write MoveForward.<\/p>\n<p>Under the Action tab we have 6 options and this is what they mean:<\/p>\n<ul>\n<li><b><u>Consume Input<\/u><\/b> \u2013 can the action take input e.g. can we bind a button to it, press that button and trigger this action<\/li>\n<li><b><u>Trigger when Pause<\/u><\/b> \u2013 can this action be trigger if the game is paused<\/li>\n<li><b><u>Reserve All Mappings<\/u><\/b> \u2013 the action mappings of this action, which are used to store input actions so we can use them in our game, can\u2019t be overriden by higher priority context mappings<\/li>\n<li><b><u>Value Type<\/u><\/b> \u2013 the value this input action will return<\/li>\n<li><b><u>Triggers<\/u><\/b> \u2013 triggers that you must trigger in order to invoke the particular input action<\/li>\n<li><b><u>Modifiers<\/u><\/b> \u2013 modifiers that are applied to the final action value e.g. value type<\/li>\n<\/ul>\n<div>For this tutorial we\u2019ll cover the Value Type and Modifiers options and the other options we\u2019ll use in some other tutorial where we can demonstrate their use.<\/div>\n<div>Click on the drop-down list for the Type Value and select the Axis1D(float) option:<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c1dbca0 elementor-widget elementor-widget-image\" data-id=\"c1dbca0\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"36 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/6580bab990462e52572fde5f844e768cb2dbce6511c63b83cf5f49fa2063f5fa.jpeg\" alt=\"36 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e7556a1 elementor-widget elementor-widget-text-editor\" data-id=\"e7556a1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This is the equivalent of using the Scale option in the old Input system:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7ab6c85 elementor-widget elementor-widget-image\" data-id=\"7ab6c85\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"37 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/75577bef3f51eda167a51b10773b71e725eec472798a5b443fc9181fe9039764.jpeg\" alt=\"37 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d0e1da1 elementor-widget elementor-widget-text-editor\" data-id=\"d0e1da1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>By selecting the Axis1D(float) option we\u2019ve enabled this input action to return a float value which we\u2019ll use to move the player character.<\/p>\n<p>Now following the same instructions above, create 4 more input actions and name them: IA_LookUp,\u00a0<span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">IA_LookRight,\u00a0<\/span><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">IA_MoveRight,\u00a0<\/span><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">IA_My_Jump:<\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e5a1f58 elementor-widget elementor-widget-image\" data-id=\"e5a1f58\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"38 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/2e802cd6913aaf2fa0f2fffaa258b50c2eb80ef6ff21b5d011b7a2b3e5f2d60c.jpeg\" alt=\"38 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0076ecb elementor-widget elementor-widget-text-editor\" data-id=\"0076ecb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Set the following options for the input actions.<\/p>\n<p>IA_MoveRight:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b1145fc elementor-widget elementor-widget-image\" data-id=\"b1145fc\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"39 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b31cd121273bb5d308e2809664425310f7a0f3597442e1d0e8f7bc373298927c.jpeg\" alt=\"39 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f42bf62 elementor-widget elementor-widget-text-editor\" data-id=\"f42bf62\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>IA_My_Jump, btw, I named this input action my jump because there is a default IA_Jump and I don\u2019t want them to intersect with each other:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c3e90f3 elementor-widget elementor-widget-image\" data-id=\"c3e90f3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"40 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/38e957b33843148882a0fa774c87c7cd81e85469a5d707c91f674b95f429d92d.jpeg\" alt=\"40 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-adc02fa elementor-widget elementor-widget-text-editor\" data-id=\"adc02fa\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>IA_LookRight:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a400c9d elementor-widget elementor-widget-image\" data-id=\"a400c9d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"41 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d529b7d7dcb0aa9a99d85f2daa248f0c794504d33869c192ddbdad4d669d5fb6.jpeg\" alt=\"41 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f3842fd elementor-widget elementor-widget-template\" data-id=\"f3842fd\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor332703<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor332703 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor332703 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor332703\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bd6b87f elementor-widget elementor-widget-text-editor\" data-id=\"bd6b87f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>IA_LookUp:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b22248d elementor-widget elementor-widget-image\" data-id=\"b22248d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"42 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f710b266bad4a02d6dd977927227d9fbf8dad5f952d24aa67c1083b255fb86a3.jpeg\" alt=\"42 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8255152 elementor-widget elementor-widget-text-editor\" data-id=\"8255152\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>As you noticed in the IA_LookUp for the modifiers option we set the Negate.<\/p>\n<p>The way it works is you press the + button for the array elements, and from the drop-down list search for Negate:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2e1521d elementor-widget elementor-widget-image\" data-id=\"2e1521d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"43 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/dd5b401ea7aa8954784c73a312e299a2261642c762edfa006385d185462973dc.jpeg\" alt=\"43 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f61c47f elementor-widget elementor-widget-image\" data-id=\"f61c47f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"44 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b2e2d17dae0d90dfaf0685c44c2648a983d275afc658533c0fbeb0cd5653e435.jpeg\" alt=\"44 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a79296c elementor-widget elementor-widget-text-editor\" data-id=\"a79296c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Using the Negate option is equivalent to setting the Scale to negative value for the old input system:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9212edb elementor-widget elementor-widget-image\" data-id=\"9212edb\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"45 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/6167a1e1acfbb187c8c2574a45bdcd0d387ab4a20bce975f26f4887a502ca879.jpeg\" alt=\"45 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7ecb1dd elementor-widget elementor-widget-text-editor\" data-id=\"7ecb1dd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When you finish modifying the settings for every input action, press the Save button at top left corner for every individual input action:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c711c2d elementor-widget elementor-widget-image\" data-id=\"c711c2d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"46 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/5ddafc8b47110969408c59cb564b23de510fcf8c7fd642a01c8b94936aeffa2c.jpeg\" alt=\"46 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f604f23 elementor-widget elementor-widget-heading\" data-id=\"f604f23\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Binding The Input Actions With Input Mapping Context<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-030d0d2 elementor-widget elementor-widget-text-editor\" data-id=\"030d0d2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the old input system to bind the actions or axis to keys, we would simply select the appropriate key from the drop down list:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-59851ce elementor-widget elementor-widget-image\" data-id=\"59851ce\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"47 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e249e285f9e550092e3855e7471b2658784cd974f15bc6abed8370381b176693.jpeg\" alt=\"47 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c4ab662 elementor-widget elementor-widget-text-editor\" data-id=\"c4ab662\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the example above, we\u2019ll trigger the MoveForward axis when we press the W key on the keyboard.<\/p>\n<p>Now to bind the input actions we created with keys we can press to trigger them we need to use Input Mapping Context.<\/p>\n<p>Inside the Input folder, Right Click -&gt; Input -&gt; Input Mapping Context:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-390bbb8 elementor-widget elementor-widget-image\" data-id=\"390bbb8\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"48 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/18e731daf251a8fc095de7968ed6d9c7ac186e371e9d096c0cc29a3f30edd277.jpeg\" alt=\"48 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e15cddc elementor-widget elementor-widget-text-editor\" data-id=\"e15cddc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Give it a name\u00a0IMC_MovementAndLook and open it in the editor.<\/p>\n<p>In the mappings tab for the mappings click the + button 5 times and in the search bar for every one of the mappings you added search the appropriate mappings we created:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b5aacd6 elementor-widget elementor-widget-image\" data-id=\"b5aacd6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"49 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e481e31cd0add70923069dbc3fe5b31932521880209f85e5e901ef292afd4c46.jpeg\" alt=\"49 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-83d0db0 elementor-widget elementor-widget-image\" data-id=\"83d0db0\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"50 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f902fb2cb7f6c09f2e1451f0ab0e677858a433ccd271ab352a0b55130c211a05.jpeg\" alt=\"50 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d82042e elementor-widget elementor-widget-text-editor\" data-id=\"d82042e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>For the IA_MoveForward set the W and the S key, and for the S key add a negative modifier:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-101de1e elementor-widget elementor-widget-image\" data-id=\"101de1e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"51 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/153f5720bc8953c4f727de3b1c558edc03ae44a737eedddb705f66066406132a.jpeg\" alt=\"51 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9251737 elementor-widget elementor-widget-text-editor\" data-id=\"9251737\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You select the keyboard keys the same way you would select them in the old input system. And the negative modifier can be added the same way we showed in the previous example above.<\/p>\n<p>Now modify the IA_MoveRight:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-20e9a46 elementor-widget elementor-widget-image\" data-id=\"20e9a46\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"52 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/5f8b069aae7b8f90a48e33fab4fff36b232452632ddd307861bb44a198747616.jpeg\" alt=\"52 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2c72042 elementor-widget elementor-widget-text-editor\" data-id=\"2c72042\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The negative modifier is set for the A key because when we press the A key we go in the negative side.<\/p>\n<p>Next modify IA_My_Jump:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-281f27e elementor-widget elementor-widget-image\" data-id=\"281f27e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"53 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/6d256c4b9f36c79ac1c756e85723a97a76bd46e03f8be324494aefc92f5436ce.jpeg\" alt=\"53 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8a10e40 elementor-widget elementor-widget-text-editor\" data-id=\"8a10e40\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And lastly we have IA_LookUp and IA_LookRight:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-54963aa elementor-widget elementor-widget-image\" data-id=\"54963aa\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"54 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/6eb47eaa4473c9dbcf37b638be7d6a1ddce35944593ade1097bb9b71a189cda8.jpeg\" alt=\"54 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3b70f11 elementor-widget elementor-widget-heading\" data-id=\"3b70f11\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Moving The Player Character With The Enhanced Input System<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d4ac83a elementor-widget elementor-widget-text-editor\" data-id=\"d4ac83a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To move the player character the first thing we need to do is get a reference to the Enhanced Input Local Player Subsystem.<\/p>\n<p>And we get that reference from the player controller:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ed9bd3c elementor-widget elementor-widget-image\" data-id=\"ed9bd3c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"55 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/320d3d597be850ab39d124d0ba611dcf99550ba3c01958e8c2d52d7c5fdf7eee.jpeg\" alt=\"55 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f699d67 elementor-widget elementor-widget-text-editor\" data-id=\"f699d67\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-61de01f elementor-widget elementor-widget-html\" data-id=\"61de01f\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/nuqu7ve5\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7adfb7b elementor-widget elementor-widget-text-editor\" data-id=\"7adfb7b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The tool from where you can copy the nodes is called blueprintUE and if you don\u2019t know how it works you can check it out by clickin the link below:<\/p>\n<p>blueprintUE An Amazing Tool<\/p>\n<p>One thing to note is in the Add Mapping Context node for the Mapping Context option you need to select the\u00a0IMC_MovementAndLook mapping context we created:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-86055f7 elementor-widget elementor-widget-image\" data-id=\"86055f7\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"56 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/46d82b35a2e38909008bc213a2d0642c95747d1f000665d3aad2eda2841ee5f4.jpeg\" alt=\"56 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b996853 elementor-widget elementor-widget-text-editor\" data-id=\"b996853\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To move the player character we\u2019ll add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-872de08 elementor-widget elementor-widget-image\" data-id=\"872de08\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"57 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/7e4ecdff7d1cd731aa259591626bdf0ca29fd75e6198c80ae0af697428acd564.jpeg\" alt=\"57 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4f088be elementor-widget elementor-widget-text-editor\" data-id=\"4f088be\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fc4fb84 elementor-widget elementor-widget-html\" data-id=\"fc4fb84\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/3hpovpmt\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fdcfd35 elementor-widget elementor-widget-text-editor\" data-id=\"fdcfd35\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This is a common code used to move a character actor in Unreal Engine that we used in the previous tutorials.<\/p>\n<p>From the control rotation we get the forward and right vector that we pass to the Add Movement Input node which makes sure that the character goes in the appropriate rotation direction.<\/p>\n<p>The only difference between this code and the one we\u2019ve been using in previous tutorials is that we are using the ehnaced input action nodes.<\/p>\n<p>Specifically we\u2019re using the IA_MoveForward and IA_MoveRight input actions that we created in the previous steps.<\/p>\n<p>Next, we need to rotate the character with mouse controls, and for that we\u2019re going to add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-cd9b04e elementor-widget elementor-widget-image\" data-id=\"cd9b04e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"58 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e90aea8bb02240f31f6a83dd9ba02c8c9052345f1623eb650ffe2396aa118ae0.jpeg\" alt=\"58 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0221c9e elementor-widget elementor-widget-text-editor\" data-id=\"0221c9e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5c03c7b elementor-widget elementor-widget-html\" data-id=\"5c03c7b\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/j4djae7b\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-974569e elementor-widget elementor-widget-text-editor\" data-id=\"974569e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Again we\u2019re using the ehnaced input system, specifically IA_LookUp and IA_LookRight.<\/p>\n<p>The last we need to do to make sure our character is rotating the right way is we need to select the Camera Arm component and in the Details tab for the Camera Settings options check the checkbox for Use Pawn Control Rotation:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b4d4994 elementor-widget elementor-widget-image\" data-id=\"b4d4994\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"59 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b9f3e34324c95ba428c29fe4b56f08c64d02b27ba8c357ec6414e23969089982.jpeg\" alt=\"59 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b8bbf90 elementor-widget elementor-widget-text-editor\" data-id=\"b8bbf90\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This is going to make sure the character\u2019s camera rotates up and down when we move the mouse up and down.<\/p>\n<p>Also, make sure that the Pawn settings for the BP_Player (self) are set as the following:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ede4169 elementor-widget elementor-widget-image\" data-id=\"ede4169\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"60 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/152b53e39d2e371c1ccbe368ca41d52e03a179f0c0c34e02b8e7958361739f34.jpeg\" alt=\"60 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-94eeee0 elementor-widget elementor-widget-text-editor\" data-id=\"94eeee0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">Only the Use Controller Rotation Yaw checkbox should be checked and this is going to make sure that when we move the mouse left and right the character will rotate left and right.<\/span><\/p>\n<p><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">Now we can test the game by pressing the play button and this is how it looks like:<\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ec8804d elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"ec8804d\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7ef0d73 elementor-widget elementor-widget-heading\" data-id=\"7ef0d73\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Character Jump And Sprint<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a03e2e3 elementor-widget elementor-widget-text-editor\" data-id=\"a03e2e3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Before make our character jump and sprint, we\u2019re going to create variables that are going to enable us to do that and also variables for controlling the overall behavior of the player character.<\/p>\n<p>Inside the Event Graph of the BP_Player blueprint create the following variables:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-24cef39 elementor-widget elementor-widget-image\" data-id=\"24cef39\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"61 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0796bf977f60676e552079df79108fb9d533af6577bdd2f0af7f1546fe7e2efe.jpeg\" alt=\"61 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1c57977 elementor-widget elementor-widget-text-editor\" data-id=\"1c57977\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Set the SprintSpeed, WalkSpeed, MaxHealth, and MaxAmmo variables to be public.<\/p>\n<p>Set the default values for the variables as follows:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9c16515 elementor-widget elementor-widget-image\" data-id=\"9c16515\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"62 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/aa4d86d0d177c03987115079836642c6935f9d17c33f865a50ff889ede751e14.jpeg\" alt=\"62 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-733c9fa elementor-widget elementor-widget-image\" data-id=\"733c9fa\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"63 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/a5b1f818695dd4dc0fb5bd8d41b997a98ea99c5defe61834b5fe74de60dc4134.jpeg\" alt=\"63 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b7c4292 elementor-widget elementor-widget-image\" data-id=\"b7c4292\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"64 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/202fcbae22269b1e625d3245b4de974ebad00ee4a6fd335a2409efbe1a56df33.jpeg\" alt=\"64 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e7a8131 elementor-widget elementor-widget-image\" data-id=\"e7a8131\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"65 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/7281b959e887efd216d2d808e7479bf5e6676fdc386a2963de2bcda1cef82d36.jpeg\" alt=\"65 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d9451d3 elementor-widget elementor-widget-image\" data-id=\"d9451d3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"66 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/eb3b3b2b16cf013ac482118b796760dc9699634e49f1a19ff276c68ddf3ab9e3.jpeg\" alt=\"66 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-422f59f elementor-widget elementor-widget-image\" data-id=\"422f59f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"67 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/c9c4b4df641314ec1fbb6e27a7b99b0d42b4e74c5d225fa11a6289d8a99a577f.jpeg\" alt=\"67 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-103b5c2 elementor-widget elementor-widget-image\" data-id=\"103b5c2\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"68 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/7187686f7cb1986cf1fa2d457002b103cc358b744305ebfc3dcbad92437e57f2.jpeg\" alt=\"68 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-93134ab elementor-widget elementor-widget-image\" data-id=\"93134ab\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"69 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/79fd48b64bc485c14411c73a9e328d72795b643c79b7b26027976eee19d42ba7.jpeg\" alt=\"69 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2f3d88d elementor-widget elementor-widget-image\" data-id=\"2f3d88d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"70 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f1afc937b8e3778471007a62ccd15c6d0ab85552c67a56c24f16ba15147fafb3.jpeg\" alt=\"70 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fe07021 elementor-widget elementor-widget-image\" data-id=\"fe07021\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"71 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/6f5f932b40518ade54fc70a41bd6873f7461dcac9572e8d57a339a7a7cb0cd4c.jpeg\" alt=\"71 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ae3aecc elementor-widget elementor-widget-image\" data-id=\"ae3aecc\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"72 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b4fd3b0798caaab204343741c636747596116dc989ff52434bd4dc4fcc44d0bd.jpeg\" alt=\"72 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-05e4331 elementor-widget elementor-widget-image\" data-id=\"05e4331\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"73 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/4e19e7f75a4066bbf3ba03816e69fecf2cde00aa190545567c79669517a1a3b9.jpeg\" alt=\"73 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-97ab31a elementor-widget elementor-widget-image\" data-id=\"97ab31a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"74 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/43fd3b6d7811f959d33292bcd10ce98a628c427edd1348a1249a024d3496d237.jpeg\" alt=\"74 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f2e69db elementor-widget elementor-widget-text-editor\" data-id=\"f2e69db\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The variable names are selfexplanatory for what we are going to use them.<\/p>\n<p>But we\u2019ll cover every variable when we use it so that we don\u2019t go over the purpose of every variable now.<\/p>\n<p>Moving forward, first we are going to make the character jump with the following code:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b46f58a elementor-widget elementor-widget-image\" data-id=\"b46f58a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"75 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/a958d030145801016571008e5b39e0a9fe263fc3f68fd02533d9c7baf79daf86.jpeg\" alt=\"75 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0ef99a8 elementor-widget elementor-widget-text-editor\" data-id=\"0ef99a8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e0bdbbd elementor-widget elementor-widget-html\" data-id=\"e0bdbbd\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/uolhm0cc\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bd3d5a7 elementor-widget elementor-widget-text-editor\" data-id=\"bd3d5a7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>First you\u2019ll notice that we\u2019re using IA_My_Jump as a trigger to make the character jump.<\/p>\n<p>Second, we\u2019re using the AimingDownSights variable as a condition to determine if we can jump or not.<\/p>\n<p>This varilable will be true when we aim with the gun, in that case we are not going to be able to jump with the character. When we\u2019re not aiming that\u2019s when we are able to jump.<\/p>\n<p>This is how it looks like in the game:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-82c4373 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"82c4373\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-299bcca elementor-widget elementor-widget-text-editor\" data-id=\"299bcca\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Before we make the character sprint, we need to create an input action for that.<\/p>\n<p>We always say the best way to learn is by practice, so your assignment is to create the input action for spriting that is going to be triggered by pressing the Left Shift key.<\/p>\n<p>Of course, we\u2019re going to give you a solution here, but we highly encourage you to try and create it on your own first, even if you fail it doesn\u2019t matter, the important thing is that you try.<\/p>\n<p>So again, inside the Input folder we\u2019re going to Right Click -&gt; Input -&gt; Input Action, give it a name IA_Sprint and set the following configuration:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7d97aa6 elementor-widget elementor-widget-image\" data-id=\"7d97aa6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"76 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d91f42fe92af8d8c6eebab15c9c0fbd286f8a773ede52593994f461aa14c9397.jpeg\" alt=\"76 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-075d0e1 elementor-widget elementor-widget-text-editor\" data-id=\"075d0e1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside the IMC_MovementAndLook we\u2019re going to create a new mapping for the sprint input action and make it trigger when we press the Left Shift key:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fc2721a elementor-widget elementor-widget-image\" data-id=\"fc2721a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"77 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/07d848692d864b00a0def57c8e6566d1f9106ac02dba9976fbf4e2ede0bb377f.jpeg\" alt=\"77 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-962ba40 elementor-widget elementor-widget-text-editor\" data-id=\"962ba40\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To make our character spring we are going to add the following code:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c7fcd3f elementor-widget elementor-widget-image\" data-id=\"c7fcd3f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"78 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/8f702d6aa1f14d2fde9d935267ae7a6f345f4787b0133aaa8f68b49ceebf4f1b.jpeg\" alt=\"78 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-aabe8d3 elementor-widget elementor-widget-text-editor\" data-id=\"aabe8d3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-382e901 elementor-widget elementor-widget-html\" data-id=\"382e901\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/_1hyu6x_\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1c83931 elementor-widget elementor-widget-text-editor\" data-id=\"1c83931\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Again we\u2019re using AimingDownSights variable to test if we are aiming. If we are not aiming then we can sprint.<\/p>\n<p>And we do that with the help of the character movement component which is by default attached on every blueprint that inherits from the Character:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5b03cee elementor-widget elementor-widget-image\" data-id=\"5b03cee\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"79 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/450bb6fda31cfd4dc87a7978e88cb8693e4502c4207d3011843fd106183e478f.jpeg\" alt=\"79 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a0648d1 elementor-widget elementor-widget-text-editor\" data-id=\"a0648d1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When we are sprinting, we simply change the Max Walk Speed variable from the character movement to the value of our custom Sprint Speed variable.<\/p>\n<p>Next we set the Orient Rotation To Movement to true. And this variable is going to make our player character rotate in the movement direction, meaning if we press the W key to move him forward, he\u2019ll rotate to face the forward direction.<\/p>\n<p>If we press the D key to move the character right, he\u2019ll rotate to face the right direction. And we\u2019ll see this in a moment when we test this feature.<\/p>\n<p>While we\u2019re sprinting we disable the use of the controller\u2019s yaw rotation by setting the Use Controller Yaw Rotation variable to false because we are rotating the character with the Orient Rotation To Movement.<\/p>\n<p>When we release the Left Shift button we do the opposite. We set the Max Walk Speed to the value of our Walk Speed variable, we disable the Orient Rotation To Movement, and we enable the Use Controller Yaw Rotation.<\/p>\n<p>This is how it looks like in the game:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-adb7e40 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"adb7e40\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-16345b1 elementor-widget elementor-widget-text-editor\" data-id=\"16345b1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Whenever we pressed the Left Shift key the character was rotation in the movement direction and he moved with higher speed.<\/p>\n<p>When we released the Left Shift key the character returned to his walk speed.<\/p>\n<p>Before we move on to the next feature, we are going to create a custom event to stop the character from sprinting when we start to aim.<\/p>\n<p>So again, inside the BP_Player blueprint editor, Right Click and search for custom event:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-87a8e6c elementor-widget elementor-widget-image\" data-id=\"87a8e6c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"80 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/02e06391b6cce4934b7ac0052cd695be91e58e142fc4e6d9d6d28d33fadc174b.jpeg\" alt=\"80 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ec7c708 elementor-widget elementor-widget-text-editor\" data-id=\"ec7c708\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Give the custom event name Unsprint Event and plug it in the following node:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1f7ab71 elementor-widget elementor-widget-image\" data-id=\"1f7ab71\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"81 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ccb6bb27f7648a30ae6bc5f8375060287aed7db621e0967e273b09070fffc73a.jpeg\" alt=\"81 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d1eea83 elementor-widget elementor-widget-text-editor\" data-id=\"d1eea83\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Basically the Unsprint custom event is going stop the character from sprinting if we start aiming while the character was sprinting and when that happens the Max Walk Speed is set to the value of our custom Walk Speed, Orient Rotation To Movement is set to false, and Use Controller Yaw Rotation to true \u2013 same thing that happens when we release the Left Shift key and the player stops sprinting.<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-88ea4cc elementor-widget elementor-widget-heading\" data-id=\"88ea4cc\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Character Animation Blueprint<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d6c34ad elementor-widget elementor-widget-text-editor\" data-id=\"d6c34ad\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To animate the character we need to create the animation blueprint. Inside the FPS_ZombieHorde -&gt; Player_Character folder Right Click -&gt; Animation -&gt; Animation Blueprint:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-832ce90 elementor-widget elementor-widget-image\" data-id=\"832ce90\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"82 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/648b59b0e45ad999af3de67a65992295c0fbaada84af2fc92827f152674e7b40.jpeg\" alt=\"82 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-cf92600 elementor-widget elementor-widget-text-editor\" data-id=\"cf92600\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the Create Animation Blueprint window select the MannequinSkeleton the one which is located in the Art folder:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3c1ce36 elementor-widget elementor-widget-image\" data-id=\"3c1ce36\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"83 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d658d42f0523a26a02ed32930480103bf8fcf7d3e7c3e6b741ec9f52a281168e.jpeg\" alt=\"83 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-38caba5 elementor-widget elementor-widget-text-editor\" data-id=\"38caba5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We need to select the skeleton from the Art folder otherwise the animations wont work.<\/p>\n<p>Give the new animation blueprint name BP_Player_Animation and open it in the editor. Next, inside the BP_Player_Animation AnimGraph we are going to create a new state machine by Right Click -&gt; State Machine:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-36b4e6c elementor-widget elementor-widget-image\" data-id=\"36b4e6c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"84 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ef2408317d44bf7e787693236f8e348ecf2779d77250f9a954266e9b4d5c3c94.jpeg\" alt=\"84 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-02d97e4 elementor-widget elementor-widget-text-editor\" data-id=\"02d97e4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Give that state machine name Default:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0a01c48 elementor-widget elementor-widget-image\" data-id=\"0a01c48\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"85 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ad19217e9fb3065bf548d08e0838562553dadfce904cd7b23c02dbc09e968ce3.jpeg\" alt=\"85 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-093576b elementor-widget elementor-widget-text-editor\" data-id=\"093576b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And then double click it and opet it\u2019s graph editor. Inside the Default state machine editor Right Click -&gt; State:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-07ba1ca elementor-widget elementor-widget-image\" data-id=\"07ba1ca\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"86 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0b90429b98040bf4069c3f22587db94bfbcd2e5415b8efd883946c02f696b6d4.jpeg\" alt=\"86 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8bb7233 elementor-widget elementor-widget-text-editor\" data-id=\"8bb7233\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And create the following states:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3fcd8f7 elementor-widget elementor-widget-image\" data-id=\"3fcd8f7\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"87 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/687693307a8a715ab7cdc3969eff094043b5b7eba5a1a04f5a3ee33f1f0fbe99.jpeg\" alt=\"87 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-32a7dcd elementor-widget elementor-widget-text-editor\" data-id=\"32a7dcd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The first animation that\u2019s going to be played is the Idle \/ Run and you set that by dragging the arrow from the Entry node on the Idle \/ Run node:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-df31c74 elementor-widget elementor-widget-image\" data-id=\"df31c74\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"88 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f06be19440727cddb931d7de2071de12571d1e61a5ec79328f4f2a3d2d912d69.jpeg\" alt=\"88 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b3b4c83 elementor-widget elementor-widget-text-editor\" data-id=\"b3b4c83\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now open the Idle \/ Run node animation because that\u2019s the first animation we\u2019re going to create.<\/p>\n<p>Inside the Graph editor for the Idle \/ Run create the following variables:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5fc2bb6 elementor-widget elementor-widget-image\" data-id=\"5fc2bb6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"89 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0699545f1dd20ccceb51e4eb4e63dc6db637a16896c693ec822c1856104d7339.jpeg\" alt=\"89 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7b2882d elementor-widget elementor-widget-text-editor\" data-id=\"7b2882d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In case you don\u2019t know where the variable tab is located, here it is:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5a8cde2 elementor-widget elementor-widget-image\" data-id=\"5a8cde2\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"90 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/890dfadc995a11bdbed1199145513c6f337e44260cc255507302800241ec0194.jpeg\" alt=\"90 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0c87bc2 elementor-widget elementor-widget-text-editor\" data-id=\"0c87bc2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>For the last variable called Player, this is going to be a reference to our BP_Player blueprint, and in order to get that reference click on the drop-down list for the Player variable and search for BP_Player and select Object Reference:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7bc54c3 elementor-widget elementor-widget-image\" data-id=\"7bc54c3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"91 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/a9a177b2c5b6b1cbddef8401a268d7f702f8449d1caf861037cd19bd206aa266.jpeg\" alt=\"91 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e35c7ba elementor-widget elementor-widget-template\" data-id=\"e35c7ba\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor342510<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor342510 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor342510 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor342510\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a2e8c1c elementor-widget elementor-widget-heading\" data-id=\"a2e8c1c\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Movement Blend Space<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-32c9be1 elementor-widget elementor-widget-text-editor\" data-id=\"32c9be1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Next we are going to create a blend space which we\u2019ll use to blend animations into each other for smoother transitions and natural look.<\/p>\n<p>Inside the Player_Character folder Right Click and create a new folder called Blend_Spaces.<\/p>\n<p>Inside of that folder Right Click -&gt; Animation -&gt; Blend Space:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0b1c5f1 elementor-widget elementor-widget-image\" data-id=\"0b1c5f1\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"92 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d6fd32a9b53efaa41f4895a46b5f20430f37978dc5096fff40b7ffdd80f9d3be.jpeg\" alt=\"92 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-cf15497 elementor-widget elementor-widget-text-editor\" data-id=\"cf15497\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Again we need to select the Skeleton for the animation and again make sure that you select the Skeleton which is inside the Art folder:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-91bb490 elementor-widget elementor-widget-image\" data-id=\"91bb490\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"93 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3334079cff4933d325994ae610762c251857b90d82732be3ae471fc5b7e08377.jpeg\" alt=\"93 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-51365ae elementor-widget elementor-widget-text-editor\" data-id=\"51365ae\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Give the blendspace a name BS_Movement which stands for blend space movement not bs, and double click the blend space to open it in the editor.<\/p>\n<p>Inside the blend space editor on the left side you\u2019ll see a tab called Axis Settings, set the following values for the Horizontal and Vertical axis:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-64efe55 elementor-widget elementor-widget-image\" data-id=\"64efe55\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"94 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/6ed64f50e56ce9be4617b075fbdf2601ab040bc844e880db1e3c3a9a421af0d9.jpeg\" alt=\"94 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a37a57f elementor-widget elementor-widget-text-editor\" data-id=\"a37a57f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The minimum and maximum axis value range we set for both Horizontal and Vertical axis are going to be used to play animations for the appropriate values.<\/p>\n<p>For example, let\u2019s say the value of Horizontal axis is 57 and the value for Vertical is 80 the animations we set on the grid, which we\u2019ll do in a moment, are going to blend into each other based on those numbers, and we\u2019ll see how that looks like.<\/p>\n<p>The Grid Divisions we set for the Vertical axis referer to the grids where we are going to put the animations we want to play:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b084446 elementor-widget elementor-widget-image\" data-id=\"b084446\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"95 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b15cc20978c48c979960a020d6bfa40355a429974a91eff18b3aaa92bf716560.jpeg\" alt=\"95 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0aaa7f0 elementor-widget elementor-widget-text-editor\" data-id=\"0aaa7f0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And lastly the Smoothing Time we set to 0.2 and Smoothing Type we set to Averaged is used to move smoothly accorss the blend space e.g. the transition between the animations is going to be smooth.<\/p>\n<p>Now we can start adding the animations which are located in the Art folder, but we can use the Asset Browser tab in the bottom right corner and in the search bar filter for animations.<\/p>\n<p>The first animation is going to be\u00a0<u><b>walk_bwd_rifle_ironsights<\/b><\/u>, so type that in the search and put that animation in the top left corner of the animation grid system:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f84d1b9 elementor-widget elementor-widget-image\" data-id=\"f84d1b9\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"96 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/7fd911ef09cff5593ce78b5f202082c54877cb22396e5aea64d15ffe66c76365.jpeg\" alt=\"96 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-febcd87 elementor-widget elementor-widget-text-editor\" data-id=\"febcd87\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can click on the Show Sample Names button and it will preview the names of the animations in the grid:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8ec8276 elementor-widget elementor-widget-image\" data-id=\"8ec8276\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"97 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/23c01c5dcd397b0455aefd887a9cc3499e22e41ca2029e0d5e028e83450c9d8a.jpeg\" alt=\"97 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-21c81d2 elementor-widget elementor-widget-text-editor\" data-id=\"21c81d2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Next, type\u00a0<u><b>walk_lt_rifle_ironsights<\/b><\/u> in the Asset Browser and drag the animation to the right of the previous one:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1892693 elementor-widget elementor-widget-image\" data-id=\"1892693\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"98 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/c3d6ef24e6cb055337bc23b2c7f56b7c6c64b5011e9bebead74ec6b5f0365636.jpeg\" alt=\"98 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-db9700d elementor-widget elementor-widget-text-editor\" data-id=\"db9700d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>For the remaining animations I\u2019m just going to put the name of the animation you should type in the Asset Browser and show you were to put the animation on the grid.<\/p>\n<p>Starting with\u00a0<b><u>walk_fwd_rifle_ironsights<\/u><\/b>:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e5590f5 elementor-widget elementor-widget-image\" data-id=\"e5590f5\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"99 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/8112b328ac32a8b21b83c0b87f5b26b56f5da4ea31aeb2c95f13a965ecc02c38.jpeg\" alt=\"99 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-324fafe elementor-widget elementor-widget-text-editor\" data-id=\"324fafe\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Next animation is\u00a0<b><u>walk_rt_rifle_ironsights<\/u><\/b>:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-30c96a4 elementor-widget elementor-widget-image\" data-id=\"30c96a4\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"100 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/830f19538663e019b4494d62d1dead12e5b39e4eec6a0a211e66990b2eac1f74.jpeg\" alt=\"100 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-209f3ff elementor-widget elementor-widget-text-editor\" data-id=\"209f3ff\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now we have the\u00a0<b><u>walk_bwd_rifle_ironsights<\/u><\/b> animation:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7f85617 elementor-widget elementor-widget-image\" data-id=\"7f85617\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"101 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/305d781d7569c9262e77905b4ecb57bedfab4f320867b1bc18dcacd9224f81b4.jpeg\" alt=\"101 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6629fa9 elementor-widget elementor-widget-text-editor\" data-id=\"6629fa9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The last animation is\u00a0<u><b>idle_rifle_ironsights<\/b><\/u> and we\u2019re going to place it at the bottom part of the grid on all 5 places:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-71b2f9f elementor-widget elementor-widget-image\" data-id=\"71b2f9f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"102 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b349c26526833760a8f0238cd5ce34fa4773305b846d14c33bdd896b62bd03db.jpeg\" alt=\"102 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8c70c61 elementor-widget elementor-widget-text-editor\" data-id=\"8c70c61\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>One thing you\u2019ll notice in the animation tab where we placed all the animations is that it has 2 axis. One called Speed and the other called Direction which are the same axis we modified in the Axis Settings:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7f163c3 elementor-widget elementor-widget-image\" data-id=\"7f163c3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"103 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/9665818ef4a7815194dc7399809de82a2dad7f9f21fcfde619824bca183c8779.jpeg\" alt=\"103 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-10abddc elementor-widget elementor-widget-text-editor\" data-id=\"10abddc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You\u2019ll also notice that the Speed axis has values from 0 to 300 and the Direction axis has values from -180 to 180:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f282133 elementor-widget elementor-widget-image\" data-id=\"f282133\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"104 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/132a50db0be7bedf468a9c3147ba348461cf2c06ebb1ebef36a5741f98eaf0f0.jpeg\" alt=\"104 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-87bb011 elementor-widget elementor-widget-text-editor\" data-id=\"87bb011\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>These are the same values we set in the Axis Settings for the appropirate axis:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1ddaf80 elementor-widget elementor-widget-image\" data-id=\"1ddaf80\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"105 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/47915b59ee59981050f33763b28959010e1a4f365e6dd35cc8fa7b7aa9a5ee89.jpeg\" alt=\"105 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4ace5e5 elementor-widget elementor-widget-text-editor\" data-id=\"4ace5e5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>These values are going to determine which animation is going to be played. If the Speed axis value is at 259 and the Direction axis value is at 155 we\u2019ll play a blend between two animations that intersect at those values.<\/p>\n<p>This is how it looks like when we preview the animation:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b9e8eb0 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"b9e8eb0\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c4a07f8 elementor-widget elementor-widget-text-editor\" data-id=\"c4a07f8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Of course, we are going to use character speed and direction when he starts moving in the game and based on those values we\u2019ll play the appropriate animations in the BS_Movement blend space.<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a9ddcae elementor-widget elementor-widget-heading\" data-id=\"a9ddcae\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Running Blend Space<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7a3b830 elementor-widget elementor-widget-text-editor\" data-id=\"7a3b830\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Create a new blend space and name it BS_Running:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d014c47 elementor-widget elementor-widget-image\" data-id=\"d014c47\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"92 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d6fd32a9b53efaa41f4895a46b5f20430f37978dc5096fff40b7ffdd80f9d3be.jpeg\" alt=\"92 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-83dd12b elementor-widget elementor-widget-text-editor\" data-id=\"83dd12b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Make sure that you select the appropriate Skeleton for the animation:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-299cce0 elementor-widget elementor-widget-image\" data-id=\"299cce0\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"93 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3334079cff4933d325994ae610762c251857b90d82732be3ae471fc5b7e08377.jpeg\" alt=\"93 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b0350b4 elementor-widget elementor-widget-text-editor\" data-id=\"b0350b4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Open BS_Running blend space and for the Axis Settings set the following values:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f2da010 elementor-widget elementor-widget-image\" data-id=\"f2da010\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"106 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d4ff907c4c7575c12604240f4a10c7c8cabb3abd0ca10d5386687a31108e0348.jpeg\" alt=\"106 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8533426 elementor-widget elementor-widget-text-editor\" data-id=\"8533426\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the Asset Browser search for the <b><u>sprint_fwd_rifle<\/u><\/b> and drag the animation as you see in the image below:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2f7be29 elementor-widget elementor-widget-image\" data-id=\"2f7be29\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"107 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/c2b8abf22244475699b4a7fd6a251bcd8e9d58e3f321b71c1b589b31f24d1081.jpeg\" alt=\"107 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5f81abc elementor-widget elementor-widget-text-editor\" data-id=\"5f81abc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Next animation is\u00a0<b><u>jog_bwd_rifle<\/u><\/b>:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3914f33 elementor-widget elementor-widget-image\" data-id=\"3914f33\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"108 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/55f8ca4322806dab919705754438e023ea1d873e860d1d6b0368c646dc4c3fc7.jpeg\" alt=\"108 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c2b6658 elementor-widget elementor-widget-text-editor\" data-id=\"c2b6658\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Moving forward we have\u00a0<b><u>jog_lt_rifle<\/u><\/b> animation:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-61ebbb3 elementor-widget elementor-widget-image\" data-id=\"61ebbb3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"109 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/9143c974bdd0a0689d96f6f728e980836cdd35d53f15ffba5f232a88037fd057.jpeg\" alt=\"109 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bae6e2d elementor-widget elementor-widget-text-editor\" data-id=\"bae6e2d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Next animation is\u00a0<b><u>jog_fwd_rifle<\/u><\/b>:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6072824 elementor-widget elementor-widget-image\" data-id=\"6072824\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"110 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/87cd5b7244450e0ff3db7294166a965630598b382db37192d1aa140cfce66b71.jpeg\" alt=\"110 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b8abbf9 elementor-widget elementor-widget-text-editor\" data-id=\"b8abbf9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The before last animation <b><u>jog_rt_rifle<\/u><\/b>:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2651758 elementor-widget elementor-widget-image\" data-id=\"2651758\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"111 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/444730072377ed90048b71caa87f029ef211e0b5070b54d258fb61c47cadc05c.jpeg\" alt=\"111 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f76ed91 elementor-widget elementor-widget-text-editor\" data-id=\"f76ed91\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And the last animation is\u00a0<b><u>jog_bwd_rifle<\/u><\/b>:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4ddba65 elementor-widget elementor-widget-image\" data-id=\"4ddba65\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"112 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/743394b93da5ee29bb2008e6b3e4c477dcc491cd5ad178a8b57fa0cfa5cb37aa.jpeg\" alt=\"112 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ffaf1e0 elementor-widget elementor-widget-text-editor\" data-id=\"ffaf1e0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We have one more animation which goes at the bottom. It\u2019s the idle animation called\u00a0<u><b>idle_rifle_hip<\/b><\/u>:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d2c2de6 elementor-widget elementor-widget-image\" data-id=\"d2c2de6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"113 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ab2aa04f881e156d4067fba7935fa6dbeb6d53f99f84f17118a0b3bc5a4f0120.jpeg\" alt=\"113 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3d64024 elementor-widget elementor-widget-heading\" data-id=\"3d64024\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Blending BS_Movement And BS_Running Blend Spaces Inside The Player Animation Blueprint<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-51748f5 elementor-widget elementor-widget-text-editor\" data-id=\"51748f5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now open the BP_Player_Animation blueprint and inside the graph for the Idle \/ Run state Right Click and in the search bar first search for the BS_Movement node:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0b4450b elementor-widget elementor-widget-image\" data-id=\"0b4450b\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"114 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/2116f9c586377c8fbdc2598d469ab72d9d6ab9ab50bca9cacd220f7293db33ea.jpeg\" alt=\"114 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e3ee720 elementor-widget elementor-widget-text-editor\" data-id=\"e3ee720\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And then for the BS_Running node:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f91082a elementor-widget elementor-widget-image\" data-id=\"f91082a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"115 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/651e0ae5e2de104c2e84c339d21c5d73a46fa86e1780bc31bdfee0d12e70f4da.jpeg\" alt=\"115 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-30cc1b2 elementor-widget elementor-widget-text-editor\" data-id=\"30cc1b2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Next, from the Variable tab drag the Direction and Speed variables and plug them in BS_Movement and BS_Running nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a145e34 elementor-widget elementor-widget-image\" data-id=\"a145e34\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"116 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/a6ed571f6d22cdbf072bba1127a4159096a12164efef1d18474a08ee716a4b6f.jpeg\" alt=\"116 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1ce8373 elementor-widget elementor-widget-text-editor\" data-id=\"1ce8373\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>These two nodes are going to play the animations we set in the previous step. But in the game when the player is aiming we are going to walk slower, and when the player is running we are going to walk or move faster.<\/p>\n<p>Because of that, we need to blend these two animations and use the appropriate animation depending on if we are aiming or not.<\/p>\n<p>For that we are going to use blend poses by bool node:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1075d25 elementor-widget elementor-widget-image\" data-id=\"1075d25\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"117 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/7c86dd215aab494e06a1d45dd936790edf1b8a5f8269422b592960f123eeb94e.jpeg\" alt=\"117 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d45885a elementor-widget elementor-widget-text-editor\" data-id=\"d45885a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Blend poses by bool takes a bool parameter and based on it\u2019s value, either true or false, it is going to play the appropriate animation.<\/p>\n<p>The bool value which we are going to use as the condition is Aiming Down Sights which we\u2019ll use to inform the blueprint if we are aiming or not:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-30e9961 elementor-widget elementor-widget-image\" data-id=\"30e9961\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"118 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/03d39cae15cfe0f78eaa85b1d8397a8dce80c44a3eae692c51885b028e2108c5.jpeg\" alt=\"118 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8795cdd elementor-widget elementor-widget-text-editor\" data-id=\"8795cdd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And now we are going to plug the appropriate blend space animations in the true and false output:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-675c3dd elementor-widget elementor-widget-image\" data-id=\"675c3dd\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"119 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/bda9a58c85c7885f115723fb40086a2d30e917f202106e92903456e03a2b615b.jpeg\" alt=\"119 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5f5ee86 elementor-widget elementor-widget-text-editor\" data-id=\"5f5ee86\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f2ed8d0 elementor-widget elementor-widget-html\" data-id=\"f2ed8d0\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/4u7xtz8l\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d1ef1d1 elementor-widget elementor-widget-text-editor\" data-id=\"d1ef1d1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And with this we are done with the Idle \/ Run state. Next open the Jump Start state by double clicking on it:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5f53fd3 elementor-widget elementor-widget-image\" data-id=\"5f53fd3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"120 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/cb0e7bf59b663f68cd57cccbc0dd23928253786497339af5cc5764b51d7ac09a.jpeg\" alt=\"120 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1d7f38e elementor-widget elementor-widget-text-editor\" data-id=\"1d7f38e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>If you don\u2019t know how to navigate the graph editor hierarchy is here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c90557c elementor-widget elementor-widget-image\" data-id=\"c90557c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"121 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/14b41e6238c6cb1346f3283689f561ff1116444942cefe912249fa29b613ed01.jpeg\" alt=\"121 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a3feda8 elementor-widget elementor-widget-text-editor\" data-id=\"a3feda8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>If you want to navigate back where all the animation states are just click on Default:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1859d2e elementor-widget elementor-widget-image\" data-id=\"1859d2e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"122 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/8069c7186462c4a045eb1ff6e4c6eb80fec0d4887e70a5564f230731e1ca2c84.jpeg\" alt=\"122 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c0b123e elementor-widget elementor-widget-text-editor\" data-id=\"c0b123e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can also watch the guide which will show you how to navigate inside the animation blueprint by clicking\u00a0here.<\/p>\n<p>Then in the default open the Jump Start state. Inside the Jump Start state in the Asset Browser filter for the\u00a0<b><u>thirdpersonjump_start<\/u><\/b> animation, drag it in the editor and then search for the\u00a0<b><u>idle_rifle_hip<\/u><\/b> animation and drag it in the graph:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1100736 elementor-widget elementor-widget-image\" data-id=\"1100736\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"123 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d5df1535f4ab591e3ebbf1b938a6c6b07c35f2bb9bd2304eec42e5f418fdfc66.jpeg\" alt=\"123 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7b5fee1 elementor-widget elementor-widget-text-editor\" data-id=\"7b5fee1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We are going to blend these two animations so that when the player jumps and falls down the jump animation will simply blend into the idle animation and we are going to do that with Layered blend per bone node:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3e16a09 elementor-widget elementor-widget-image\" data-id=\"3e16a09\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"125 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/5aaabab3a6a86cb0ff23b691d6c53bfdfbdb8a8b15abdbd7e302689d6fe0eaad.jpeg\" alt=\"125 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-96e3939 elementor-widget elementor-widget-text-editor\" data-id=\"96e3939\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2af4b1c elementor-widget elementor-widget-html\" data-id=\"2af4b1c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/7q-h6wq3\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f5431e0 elementor-widget elementor-widget-text-editor\" data-id=\"f5431e0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now to make the Layered blend per bone work, we need to click on it, and in the Details tab click on the Layer Setup -&gt; Index -&gt; Branch Filters then create a new array element and for the Bone Name type spine_01:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-df50815 elementor-widget elementor-widget-image\" data-id=\"df50815\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"126 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f937ea55918cc7514ed5bc0c2a2b68697b05fcebe69a2f632442b1cbe82ee703.jpeg\" alt=\"126 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-22db05e elementor-widget elementor-widget-text-editor\" data-id=\"22db05e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The bone name we passed is important because that\u2019s the base in the skeleton of the 3D model which will be used to blend these animations.<\/p>\n<p>And you can find the bone names by clicking on the skeleton option inside the graph:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-56ecd93 elementor-widget elementor-widget-image\" data-id=\"56ecd93\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"127 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/eb1642de6f083aa9897e8f1ad5648ebbc4dfa7c37c100ec4ac2ee813ad3fe44d.jpeg\" alt=\"127 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1295c99 elementor-widget elementor-widget-text-editor\" data-id=\"1295c99\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And in the new window the bone names are in the left tab:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4608af8 elementor-widget elementor-widget-image\" data-id=\"4608af8\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"128 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e96c35ea80e957cd9288bd830cf0ae962e7c6239d5dae2667d36d9ae3c675a71.jpeg\" alt=\"128 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-50e9ead elementor-widget elementor-widget-text-editor\" data-id=\"50e9ead\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Moving forward, for the Jump Idle state we are going to do the same thing for the <b><u>thirdpersonjump_loop<\/u><\/b> and <b><u>idle_rifle_hip<\/u><\/b> animations:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9480053 elementor-widget elementor-widget-image\" data-id=\"9480053\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"129 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/43bad3cb7fbf448a7e4e51d5878eccf499ddd59d7be1e607b8bbfcff963a7157.jpeg\" alt=\"129 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b8968d1 elementor-widget elementor-widget-text-editor\" data-id=\"b8968d1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-af2599d elementor-widget elementor-widget-html\" data-id=\"af2599d\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/l5rpcr91\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a08ae3a elementor-widget elementor-widget-text-editor\" data-id=\"a08ae3a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Again do the same thing for the Layered blend per bone and add the spine_01 in the Bone Name field:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c7954a1 elementor-widget elementor-widget-image\" data-id=\"c7954a1\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"130 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0f40d0513e59b404921e938a8bf13ddd4879d278edee572ce3d38dd5d1b51f2b.jpeg\" alt=\"130 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a3870ba elementor-widget elementor-widget-text-editor\" data-id=\"a3870ba\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Lastly for the Jump End state, we are going to do the same for the <b><u>thirdperson_jump<\/u><\/b> and <b><u>idle_rifle_hip<\/u><\/b> animations:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ed005ac elementor-widget elementor-widget-image\" data-id=\"ed005ac\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"131 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b6fdc3d997d73102840dd8ce6d4e194d99c5ccb2cf9e8e8bbd33cdf1039bbeab.jpeg\" alt=\"131 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0f8b400 elementor-widget elementor-widget-text-editor\" data-id=\"0f8b400\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fc3914c elementor-widget elementor-widget-html\" data-id=\"fc3914c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/vsy-sz_8\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-622f8e2 elementor-widget elementor-widget-text-editor\" data-id=\"622f8e2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And repeat the process for the Layered blend per bone:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-57d7ffd elementor-widget elementor-widget-image\" data-id=\"57d7ffd\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"130 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0f40d0513e59b404921e938a8bf13ddd4879d278edee572ce3d38dd5d1b51f2b.jpeg\" alt=\"130 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3ee1c9e elementor-widget elementor-widget-heading\" data-id=\"3ee1c9e\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Animation Transition Conditions<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d7418b7 elementor-widget elementor-widget-text-editor\" data-id=\"d7418b7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To move from one animation state to another we need to create transitions which will indicate the direction of the animations e.g. which animation will be played next.<\/p>\n<p>To create a transition simply drag a line from one state node to another. If you don\u2019t know how you can see in the guide we created in another blog post by clicking\u00a0here.<\/p>\n<p>So when we jump we are going to go from Idle \/ Run -&gt; Jump Start -&gt; Jump Loop -&gt; Jump End:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-17c90cc elementor-widget elementor-widget-image\" data-id=\"17c90cc\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"132 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/78d6c7ce3ad0757bff9db5915dd20fc2de3c71ad8cc027881acb268dc8a32999.jpeg\" alt=\"132 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-839977d elementor-widget elementor-widget-text-editor\" data-id=\"839977d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>These arrows represent the transition from one animation state to another. But to trigger that transition we need to create a condition that needs to be fulfilled for that to happen.<\/p>\n<p>To create a condition double click on the circle above the transition arrow.<\/p>\n<p>First we are going to create the condition from Idle \/ Run to Jump Start:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-64f3c35 elementor-widget elementor-widget-template\" data-id=\"64f3c35\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor353607<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor353607 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor353607 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor353607\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c94171a elementor-widget elementor-widget-image\" data-id=\"c94171a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"133 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/fca31fc89dd3ec4ae8d93bea9f67d5712f33b398cbdf05829a285bd17787922b.jpeg\" alt=\"133 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e68cd5d elementor-widget elementor-widget-text-editor\" data-id=\"e68cd5d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And the condition for this transition is going to the following:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-57baae6 elementor-widget elementor-widget-image\" data-id=\"57baae6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"134 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e6d96561068cd8018537ea4a62c31f50f27a6d566ffd6b67bb04f00be835d88f.jpeg\" alt=\"134 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8a8a488 elementor-widget elementor-widget-text-editor\" data-id=\"8a8a488\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This basically means when the Is In Air variable is true, then the animation will transition from Idle \/ Run state to the Jump Start state.<\/p>\n<p>Next we are going to set the condition for the transition between Jump Start and Jump Loop state:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c1cc168 elementor-widget elementor-widget-image\" data-id=\"c1cc168\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"135 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/9e78059d27d4d7225fe72f4e5d8834bcd61724bd3a20f790e9f3ad856dc3ad8f.jpeg\" alt=\"135 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-54e99d3 elementor-widget elementor-widget-text-editor\" data-id=\"54e99d3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The condition for this transition is going to be the end of the Jump Start animation e.g. when the jump animation finishes playing, we are immediately going to transition to Jump Loop animation.<\/p>\n<p>For that, we need to find the time remaining of the playing animation so Right Click and in the search bar type <u style=\"font-weight: bold;\">time remaining third person jump start<\/u> and select the function you see in the image:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f114127 elementor-widget elementor-widget-image\" data-id=\"f114127\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"136 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ea39d31b7f861527b4a278755365490ba16260381574a6cf81ba371a255ef46a.jpeg\" alt=\"136 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-504c033 elementor-widget elementor-widget-text-editor\" data-id=\"504c033\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We are going to compare the returned value to a float to determine when the animation has finished playing. So drag a line from the returning value and in the search bar type &lt; and then select less:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8175ff1 elementor-widget elementor-widget-image\" data-id=\"8175ff1\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"137 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/25dbb4ea4103bc7a00fe624978c8dfdb2e826b2bb7bb57037b44bb07a6071a89.jpeg\" alt=\"137 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4731ce7 elementor-widget elementor-widget-text-editor\" data-id=\"4731ce7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>For the float value to which we are comparing we are going to put 0.1 and then plugin the returned bool value in the result:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6da7009 elementor-widget elementor-widget-image\" data-id=\"6da7009\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"138 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/8687b37eae8c02716e70ff326e028a13b1f48b35a5875fd878708d24e8121bc0.jpeg\" alt=\"138 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-86003cf elementor-widget elementor-widget-text-editor\" data-id=\"86003cf\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This means when the ThirdPersonJump_Start animation play time gets to a value that\u2019s less than 0.1 then this condition will be true and we will transition to the next animation.<\/p>\n<p>The next transition is the one between Jump Loop and Jump End:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-37a513a elementor-widget elementor-widget-image\" data-id=\"37a513a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"139 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/fe174644838aed094ed4c266c42de8923af2b1e9f376a48e9e6913217d565b26.jpeg\" alt=\"139 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8ac94ae elementor-widget elementor-widget-text-editor\" data-id=\"8ac94ae\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And the condition for this transition is the following:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1191a79 elementor-widget elementor-widget-image\" data-id=\"1191a79\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"140 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/74d5540dab4cc44b9f4698fda017d351110b5cba9e2ec2cbda1ed7eaf8789d2e.jpeg\" alt=\"140 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ea8c07c elementor-widget elementor-widget-text-editor\" data-id=\"ea8c07c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We are testing the opposite of Is In Air basically we\u2019re asking if we are not in the air, then we are going to play the Jump End animation.<\/p>\n<p>And the last transition is from Jump End to Idle \/ Run:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4630c86 elementor-widget elementor-widget-image\" data-id=\"4630c86\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"141 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d0758cbc7ed892594159d24f9aea85bc9bb17a0e06fa6e75ac7dbb0128310c21.jpeg\" alt=\"141 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6951891 elementor-widget elementor-widget-text-editor\" data-id=\"6951891\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The condition for the last transition is going the following:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3f74e7c elementor-widget elementor-widget-image\" data-id=\"3f74e7c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"142 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/01a79616783194dff5c2777cca38add0d68a297585e4101c2882ab5bf0b3c0c7.jpeg\" alt=\"142 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d7e054c elementor-widget elementor-widget-text-editor\" data-id=\"d7e054c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The logic is the same as the one in the condition for the transition between the Jump Start and Jump Loop, except here we are testing when the jump animation playing time gest to the value which is less than 0.1 then the condition will be true and we will transition to the Idle \/ Run animation.<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3deae7a elementor-widget elementor-widget-heading\" data-id=\"3deae7a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Playing The Character Movement Animation<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-03e39da elementor-widget elementor-widget-text-editor\" data-id=\"03e39da\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Before we can test the player\u2019s animations we need to pass all the parameter values which we set in the conditions for the transitions.<\/p>\n<p>As well as the Speed and Direction variables which we\u2019re using as conditions for the movement animation.<\/p>\n<p>Go in the Event Graph tab in the BP_Player_Animation blueprint, then from the Try Get Pawn Owner node drag a line and in the search bar type is valid and select the one with the question mark:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c2eccf0 elementor-widget elementor-widget-image\" data-id=\"c2eccf0\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"143 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/961fc494c6105c41ecf4472df1393c63427974e120b1164a9cd16bb44297f964.jpeg\" alt=\"143 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4df5bec elementor-widget elementor-widget-text-editor\" data-id=\"4df5bec\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This is going to test if the pawn owner or if the animation blueprint has an owner meaning the animation blueprint is being used on an actor.<\/p>\n<p>If that is true, we\u2019re going to test if the character is in air:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fb22bff elementor-widget elementor-widget-image\" data-id=\"fb22bff\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"144 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/7ef4f9df35c4cf03c69bd967c1cc271b8c4810123e7a4be833cfe815e67c7706.jpeg\" alt=\"144 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0ffad66 elementor-widget elementor-widget-text-editor\" data-id=\"0ffad66\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To test if the character is in air we simply get the movement component from the pawn owner because we know we have that component attached on the character since we inherited from the Character class.<\/p>\n<p>Next we are going to set the value for the Direction variable:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9944430 elementor-widget elementor-widget-image\" data-id=\"9944430\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"145 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/31c198bae526755df405d6af2decf0325c486450d9c030a371d1e4a83b83ca23.jpeg\" alt=\"145 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e4527f1 elementor-widget elementor-widget-text-editor\" data-id=\"e4527f1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When you\u2019re searching for the calculate direction node make sure that you select the one which has 3 parameters:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bf994bc elementor-widget elementor-widget-image\" data-id=\"bf994bc\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"146 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/eade2d4d50544fa1ca1ad57faac4cad7f246c3d8f3e3533684c156ae4ce6db7e.jpeg\" alt=\"146 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-17e079e elementor-widget elementor-widget-text-editor\" data-id=\"17e079e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>After that we\u2019re going to calculate the speed:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-84562eb elementor-widget elementor-widget-image\" data-id=\"84562eb\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"147 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f37816cbdd7c9829ac16b5f3cbc9621aa68ef38e47bcfa43583c189731ef43ef.jpeg\" alt=\"147 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d99dc18 elementor-widget elementor-widget-text-editor\" data-id=\"d99dc18\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The speed is calculated by using the length property of the velocity vector for the character movement because the velocity represents the speed of the character movement and the leght of the velocity is the speed value.<\/p>\n<p>Moving forward we are going to set the value of the aiming down sights variable.<\/p>\n<p>For that, in the Begin Play node we\u2019re going to get a reference to the BP_Player object:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fa2f866 elementor-widget elementor-widget-image\" data-id=\"fa2f866\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"148 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3476f0a4ea2c8cb7e3157ad68d837685304e9bac1417072c7dec341ce2151c7a.jpeg\" alt=\"148 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5c0bf5f elementor-widget elementor-widget-text-editor\" data-id=\"5c0bf5f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now that we have a reference to the player object we can set the aiming down sigths variable:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3e5ed60 elementor-widget elementor-widget-image\" data-id=\"3e5ed60\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"149 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/cac44b8228f4df773802bcd4ded31fe360b1807973f411657f517c7681298836.jpeg\" alt=\"149 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7f0ad99 elementor-widget elementor-widget-text-editor\" data-id=\"7f0ad99\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes we created so far from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a4770b8 elementor-widget elementor-widget-html\" data-id=\"a4770b8\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/i-mxvx1j\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e37dd48 elementor-widget elementor-widget-text-editor\" data-id=\"e37dd48\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Before we proceed, you\u2019ll have an assignment to rewrite the current code and make it better.<\/p>\n<p>While this code will run fine and there are no performance issues, there is a way to write it better and have better performance in a potentially larger game.<\/p>\n<p>One hit we\u2019ll give you is look at the variables we\u2019re setting and from where we are setting them. This will help you figure out how to write the code better.<\/p>\n<p>And if you can\u2019t figure out what you need to do, leave a comment below and we\u2019ll help you out.<\/p>\n<p>This is a method we\u2019re using inside Game Dev Pro which we found very effective because the best way to learn is by doing and by doing we don\u2019t mean just copy-paste what\u2019s being done in the tutorial you\u2019re following but changing stuff in the project, rewriting the code and so on.<\/p>\n<p>In Game Dev Pro we challenge our students all the time to finish assignments, come up with better ways to write the code, optimize the game and so on. Of course, we provide the solution, but the students learn through the experience of trying to fix the issue on their own.<\/p>\n<p>That\u2019s one of the reasons why we\u2019re able to help thousands of people become pro game developers and get hired in the best game studios in the world and why we have thousands of people who did just that.<\/p>\n<p>And that\u2019s why Game Dev Pro can help you do the same. You can check it out by clicking on the link here: Game Dev Pro<\/p>\n<p>Next we are going to set the pitch, and for that we are going to create a function. In the Functions tab on the left side create a new function and call it SetPitch:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f8360a7 elementor-widget elementor-widget-image\" data-id=\"f8360a7\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"150 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/02dabe25c1497f7d708facf7f4b227ecbd6c5aa2b0562e431b0f44028711cef2.jpeg\" alt=\"150 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d83acd8 elementor-widget elementor-widget-text-editor\" data-id=\"d83acd8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the SetPitch function add the following code:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c29db40 elementor-widget elementor-widget-image\" data-id=\"c29db40\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"151 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/927c8b021144e6f39c4339ecda3542d462bfc1a1c31571034c86b82e83dc48e6.jpeg\" alt=\"151 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8b56276 elementor-widget elementor-widget-text-editor\" data-id=\"8b56276\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c0cba3d elementor-widget elementor-widget-html\" data-id=\"c0cba3d\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/7hxnvaox\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bdd38dd elementor-widget elementor-widget-text-editor\" data-id=\"bdd38dd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>First we get the values of the control rotation and the actor rotation and we\u2019re merging them together inside the Delta Rotation node. Btw, the control rotation is the rotation of the controller of our player character and the actor rotation is the rotation of the player character himself.<\/p>\n<p>Then we created a new rotator by passing the current value of our pitch variable and we used RInterp To node to interpolate from the rotator we created using our pitch variable, and the rotator created from the Delta node where we passed the control rotation and actor rotation.<\/p>\n<p>The interpolation will move from the current rotator to the target rotator e.g. the values of the parameter we pass in the current to the values of the parameter we pass in the target.<\/p>\n<p>Essentially it is going to set the values of the current rotator to the same values of the target rotator in the time we passed e.g. delta seconds with the speed we passed in the Interp Speed parameter.<\/p>\n<p>When we calculate those values we break the rotator again and we use it\u2019s pitch value to set the value of our pitch variable.<\/p>\n<p>Now that we have the SetPitch function we can move forward with the code:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-12b4bea elementor-widget elementor-widget-image\" data-id=\"12b4bea\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"152 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/78521424400c4c004b2e4400ccfdb654150a758bb505cccd2cb78bbadb4a271e.jpeg\" alt=\"152 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2a50a09 elementor-widget elementor-widget-text-editor\" data-id=\"2a50a09\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the final nodes before we test the player animation from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f8e1b07 elementor-widget elementor-widget-html\" data-id=\"f8e1b07\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/9xh1xeq-\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e32a1ff elementor-widget elementor-widget-text-editor\" data-id=\"e32a1ff\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>After we called the SetPitch function which is going to set the pitch as we explained a moment ago, we\u2019re setting the Sprinting bool variable by testing if the character movement max walk speed is greater than the walk speed.<\/p>\n<p>We have everything we need to test the character movement animation but before we do that, inside the BP_Player_Animation blueprint in the AnimGraph connect the Default state machine with the output pose:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-cec5063 elementor-widget elementor-widget-image\" data-id=\"cec5063\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"153 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/93d665041996fd92b88f58319b1bc7281719494ab3dabf987b064b5ce0a0ec27.jpeg\" alt=\"153 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b7b59a6 elementor-widget elementor-widget-text-editor\" data-id=\"b7b59a6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside the BP_Player blueprint select the mesh component and in the anim class select BP_Player_Animation:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-da2df19 elementor-widget elementor-widget-image\" data-id=\"da2df19\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"154 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/457ff4f7cd85932b6bfc25c972ab3054aafb987e27b70ec4c3bd259388abfa7a.jpeg\" alt=\"154 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5f04b76 elementor-widget elementor-widget-template\" data-id=\"5f04b76\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor366848<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor366848 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor366848 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor366848\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4582731 elementor-widget elementor-widget-text-editor\" data-id=\"4582731\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When we play the game this is how the animation looks like:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-40ad674 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"40ad674\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8ad1755 elementor-widget elementor-widget-text-editor\" data-id=\"8ad1755\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Every time we pressed the Left Shift key the player character started sprinting and we saw the animations being played.<\/p>\n<p>These animations are controlled by the Direction and Speed variables that we set in the BP_Player_Animation EventGraph which we already explained and the values we set in that graph will be the values that the Idle \/ Run state is using to play the BS_Movement and BS_Running animations:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-df4e874 elementor-widget elementor-widget-image\" data-id=\"df4e874\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"155 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/621cec94d92cfa20e0d5f6f0eefddbe9b4c98fb419f67fe8729a8757d43b585f.jpeg\" alt=\"155 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0df9936 elementor-widget elementor-widget-text-editor\" data-id=\"0df9936\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The transitions for all animations work in the same way. We set the values for the variables such as is in air and sprinting and when the values change the transitions for the appropriate animations will trigger.<\/p>\n<p>Before we proceed, if you followed every step up to this point, when you test the player movement animations you\u2019ll probably get an error like this:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-580ce58 elementor-widget elementor-widget-image\" data-id=\"580ce58\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"156 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/043c5aa156cccbd027d6ba6e52528770c4c0ab51249c43bdee7a4ee5958e17de.jpeg\" alt=\"156 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-816a095 elementor-widget elementor-widget-text-editor\" data-id=\"816a095\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Your assignment is to fix the error before you proceed. Of course, we\u2019re going to provide the solution, but agian, the best way to learn is by practice, and you learn the most when you practice solving bugs.<\/p>\n<p>Below you\u2019ll find the nodes which you can copy paste in your project and compare with the current setup and you\u2019ll see the key difference, which is very small btw, that will make that error go away.<\/p>\n<p>But we highly encourage you to try and solve the problem on your own before you copy and paste the nodes.<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2e04a39 elementor-widget elementor-widget-html\" data-id=\"2e04a39\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/k963-m_5\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c3de249 elementor-widget elementor-widget-heading\" data-id=\"c3de249\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Creating The Character\u2019s Aim Offset Animation<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1c8a149 elementor-widget elementor-widget-text-editor\" data-id=\"1c8a149\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside the Player_Character folder create a new folder and name it Aim_Offsets. Inside the Aim_Offsets folder Right Click -&gt; Animation -&gt; Aim Offset:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6f9bb34 elementor-widget elementor-widget-image\" data-id=\"6f9bb34\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"157 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d5f8f8f9db811b458c2ac68e2e05edf1a15f04aaa79dd8e253f1431befb99c2a.jpeg\" alt=\"157 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9542bcc elementor-widget elementor-widget-text-editor\" data-id=\"9542bcc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the next window select the appropriate skeleton for the animation which is the same player character skeleton we used for the animations so far:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-993907c elementor-widget elementor-widget-image\" data-id=\"993907c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"158 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/68b34e2c79985c1fa8c233ef48a3768c29837614a1970b56f20cf9be3007360d.jpeg\" alt=\"158 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-085b5ed elementor-widget elementor-widget-text-editor\" data-id=\"085b5ed\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Give the aim offset animation name Aim_Offset_Movement and open it in the editor.<\/p>\n<p>Before we proceed, an aim offset animation is used to create a multidimensional weapon aiming blend structure or to put it in simple words it is going to allow us to play aiming animations and walking animations at the same time.<\/p>\n<p>Moving forward, in the Asset Details tab on the left side under the Axis Settings then Horizontal Axis add the following values:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e5bc40a elementor-widget elementor-widget-image\" data-id=\"e5bc40a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"159 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/cba870a08ba5580c93fbb8d7dbb5b463ea6dca5cef07f14592d8d6657799b65f.jpeg\" alt=\"159 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-aa2577d elementor-widget elementor-widget-text-editor\" data-id=\"aa2577d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We\u2019re not going to change the values of the vertical axis because we\u2019re not going to use it.<\/p>\n<p>Next, in the Asset Browser type <b><u>is_cd<\/u><\/b> and drag the animation at the same place like in the image below:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-dcee485 elementor-widget elementor-widget-image\" data-id=\"dcee485\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"160 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/930471c7558d5c66ccadf24e7bbd0a4fa112d5aa535780c219d70275a626e055.jpeg\" alt=\"160 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-140aeca elementor-widget elementor-widget-text-editor\" data-id=\"140aeca\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Moving forward the next animation is <b><u>is_cc<\/u><\/b> and it goes here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0334813 elementor-widget elementor-widget-image\" data-id=\"0334813\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"161 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/c92a698f09c9ac3255acee723a5d9a2e4fa51f851500e6ce797a5747f6e2f3fb.jpeg\" alt=\"161 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fa2f3b8 elementor-widget elementor-widget-text-editor\" data-id=\"fa2f3b8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And the last animation is <b><u>is_cu<\/u><\/b> which goes here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d81f603 elementor-widget elementor-widget-image\" data-id=\"d81f603\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"162 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/4ca241cf956aa708220e91f368ee4d2cba7fcd3fce7d92fbf71e62a419b3a1f3.jpeg\" alt=\"162 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d8df64d elementor-widget elementor-widget-text-editor\" data-id=\"d8df64d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>If you try to preview the animation and it looks wierd, you just need to remove the preview base pose:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3f22013 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"3f22013\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1b117f3 elementor-widget elementor-widget-text-editor\" data-id=\"1b117f3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now we\u2019re going to create another aim offset for the idle animation. So repeat the same process to create the aim offset and name it Aim_Offset_Idle. Open the Aim_Offset_Idle and in the Axis Settings for the Horizontal Axis add the following values:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fd1c1af elementor-widget elementor-widget-image\" data-id=\"fd1c1af\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"163 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3982b54efb09b7427eba00769bb7075cd44af9685f50bc0be60bfa2da808c52e.jpeg\" alt=\"163 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1592ef0 elementor-widget elementor-widget-text-editor\" data-id=\"1592ef0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Again we\u2019re not going to use the Vertical axis so we\u2019re not going to edit its settings.<\/p>\n<p>We\u2019re going to add the following animations in the appropraite places like in the images below.<\/p>\n<p>Starting with\u00a0 <b><u>cc<\/u><\/b>:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d022e11 elementor-widget elementor-widget-image\" data-id=\"d022e11\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"165 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d03fb42c8acd2714370711ff38da81be818e25deafcaccbd2c15ee9a42b72b29.jpeg\" alt=\"165 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-aedd945 elementor-widget elementor-widget-text-editor\" data-id=\"aedd945\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Then <u><b>cd<\/b><\/u>:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9e5e30c elementor-widget elementor-widget-image\" data-id=\"9e5e30c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"164 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/244966fe8bd7a2e737a7fa87ce40322ef7ca0c3d52afb6bed0248150b7f96ef8.jpeg\" alt=\"164 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-279412b elementor-widget elementor-widget-text-editor\" data-id=\"279412b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And finally <b><u>cu<\/u><\/b>:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-722743a elementor-widget elementor-widget-image\" data-id=\"722743a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"166 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/cfb1abcf19290dfaa2941eda5505981d6beffce43f0a087661b184a31fc47f00.jpeg\" alt=\"166 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9a6a153 elementor-widget elementor-widget-text-editor\" data-id=\"9a6a153\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now open BP_Player_Animation AnimGraph. Right Click the type in the search save cached pose:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8c75cfa elementor-widget elementor-widget-image\" data-id=\"8c75cfa\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"167 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3f7abb9350263b17902d1f5983fec4c3ec256edebfff9d4b810675d3df46bd14.jpeg\" alt=\"167 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d394939 elementor-widget elementor-widget-text-editor\" data-id=\"d394939\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We\u2019re going to cache the movement animation in the new node we created and then combie it with the aim offset animations.<\/p>\n<p>So disconect the default state machine node from the output pose and connect it to the new cached node we created which you\u2019ll name Cached Movement:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b98cb73 elementor-widget elementor-widget-image\" data-id=\"b98cb73\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"168 \u2013 Zombie\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/fe8ca9c8cc4462ba93c3fc4e86caf4fcec5953f8fd745f80f9c54430010db737.jpeg\" alt=\"168 - Zombie\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9ab6631 elementor-widget elementor-widget-text-editor\" data-id=\"9ab6631\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Next, Right Click and in the search bar find the aim offset movement and aim offset idle, and take the Pitch variable and plug it in the appropriate slot for both aim offset nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-72aa6f5 elementor-widget elementor-widget-image\" data-id=\"72aa6f5\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"169 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f841d055ff4ca6ec7b73761c579ea792618a76896565ed4bfdd5d6bad8a9201b.jpeg\" alt=\"169 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-312734d elementor-widget elementor-widget-text-editor\" data-id=\"312734d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now Right Click and search for blend poses by bool:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5992dcc elementor-widget elementor-widget-image\" data-id=\"5992dcc\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"170 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/902c955817248e7740c4ea33b2ebdc95885d95e4a8a0b28cc5c99ff2bf22e255.jpeg\" alt=\"170 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8dcb387 elementor-widget elementor-widget-text-editor\" data-id=\"8dcb387\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And the bool parameter we\u2019re going to use is the AimingDownSights:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f24099d elementor-widget elementor-widget-image\" data-id=\"f24099d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"171 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b19abb45211075bd9245bcaa1524adbd3fc6f5cd6ed821bd3002d18edf2dfe1a.jpeg\" alt=\"171 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ded4384 elementor-widget elementor-widget-text-editor\" data-id=\"ded4384\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>So if we are aiming we\u2019re going to play the aim offset movement animation and if we\u2019re not moving we\u2019re going to play the aim offset idle animation.<\/p>\n<p>Next, Right Click and search for layered blend per bone:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-02968d0 elementor-widget elementor-widget-image\" data-id=\"02968d0\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"172 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/efdccadebc3d274db612427692b9e9a61e075549c8d1a99f93fdcf300f701a1d.jpeg\" alt=\"172 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4bf462f elementor-widget elementor-widget-text-editor\" data-id=\"4bf462f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now Right Click and search for the cached movement:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-814b68b elementor-widget elementor-widget-image\" data-id=\"814b68b\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"173 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/37a438c4febf4eb40ffc6310bbfd69dd838dc602a0827777262caae71fb3f0a3.jpeg\" alt=\"173 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e076b69 elementor-widget elementor-widget-text-editor\" data-id=\"e076b69\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Because we are caching hte movement animation we can use it in a separate node, and we are going to use it as a base pose for the layered blend per bone:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4d2e6ab elementor-widget elementor-widget-image\" data-id=\"4d2e6ab\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"174 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f0e6a43e740997acae8edae6eef9729361b8a83b1af244a84d3be30779f741b9.jpeg\" alt=\"174 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f3267ce elementor-widget elementor-widget-text-editor\" data-id=\"f3267ce\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Next select the layered blend per pone and in the Details tab for the layer setup set the following settings:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a50a214 elementor-widget elementor-widget-image\" data-id=\"a50a214\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"175 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/fbe7ba87cb3a986503f68497058862b23e712ec52ebd9e089d2a1a59cd211780.jpeg\" alt=\"175 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3d4cce1 elementor-widget elementor-widget-text-editor\" data-id=\"3d4cce1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This will indicate where on the animation skeleton this blend will happen.<\/p>\n<p>Create another blend poses by bool and this time we\u2019re going to test if we are sprinting so that we can set the appropriate animations to play:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1485f83 elementor-widget elementor-widget-image\" data-id=\"1485f83\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"176 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/4a3b451c0f095fb65d7a3a4f197f27cdc31ae6fb3a89921b53395de98379a6b7.jpeg\" alt=\"176 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-95650c0 elementor-widget elementor-widget-text-editor\" data-id=\"95650c0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>If we are sprinting we\u2019ll use the cached movement for the movement animation, if we are not sprinting then we\u2019ll use previous layered blend per bone we created.<\/p>\n<p>You\u2019ll also notice that we changed the values for the true and false blend time which basically represents how long the blend of the animations is going to last for the true and false blend inputs.<\/p>\n<p>Now create a new save cached pose, name it cached aim offset and plug in the last blend poses by bool we created:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-574a1a1 elementor-widget elementor-widget-image\" data-id=\"574a1a1\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"177 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/7cf977a9731a28ec7f86527d413999838cd3b83772311d8ff00245f9127bf8be.jpeg\" alt=\"177 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ea2f61a elementor-widget elementor-widget-text-editor\" data-id=\"ea2f61a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Finally we need to blend the caches we created to make our animations work together. For that first we\u2019re going to create a default slot:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-15166cd elementor-widget elementor-widget-image\" data-id=\"15166cd\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"178 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ea8ef8734c9d97f5ae3892193aeedb378541906dd1ebe09feb6a971b783b7501.jpeg\" alt=\"178 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-25ec977 elementor-widget elementor-widget-template\" data-id=\"25ec977\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor373510<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor373510 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor373510 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor373510\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2160aef elementor-widget elementor-widget-text-editor\" data-id=\"2160aef\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Click on the default slot and in the Details tab for the slot name click the drop-down list and select DefaultGroup.Upperbody:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7ecefae elementor-widget elementor-widget-image\" data-id=\"7ecefae\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"179 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/42ff33677694e63940919c7518792933258466983f0ec3738dd7f3f27d4d1ac1.jpeg\" alt=\"179 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9b2e0ba elementor-widget elementor-widget-text-editor\" data-id=\"9b2e0ba\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now create a layered blend per bone node and two cached aim offset nodes and plug them according to the image below:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ac85bbe elementor-widget elementor-widget-image\" data-id=\"ac85bbe\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"180 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/86d972d1854f9e6bf91ae1364911dbb29bdb3950cdb619cdac79e7d2844c109f.jpeg\" alt=\"180 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b4a8900 elementor-widget elementor-widget-text-editor\" data-id=\"b4a8900\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>One cached aim offset is going to affect the upper body through the default slot and the other is going to affect the lower body.<\/p>\n<p>We also need to change the settings for the layered blend per bone:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e73d90f elementor-widget elementor-widget-image\" data-id=\"e73d90f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"181 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/83d9d4575243daa72ff4581e7eb9c4ae41ddb5a2a07fa3b60272da7834a83293.jpeg\" alt=\"181 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d903f5a elementor-widget elementor-widget-text-editor\" data-id=\"d903f5a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Finally, we need to create another default slot and plugin the output of the previous layered blend per bone and plug the output from the default slot in the output pose node:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bc1b080 elementor-widget elementor-widget-image\" data-id=\"bc1b080\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"182 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/977cfa70f04376350925f4a802a70258f8c7c824cf0bdc59acc608beb8ff9ce0.jpeg\" alt=\"182 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d9e141a elementor-widget elementor-widget-text-editor\" data-id=\"d9e141a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the final node structure from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a2c9a1b elementor-widget elementor-widget-html\" data-id=\"a2c9a1b\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/w332jq00\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2d644d5 elementor-widget elementor-widget-heading\" data-id=\"2d644d5\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Attaching The Gun On The Player Character<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ce5fc92 elementor-widget elementor-widget-text-editor\" data-id=\"ce5fc92\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Before we can test the animation setup we just created we need to implement the aiming functionality. But first, we need to attach the gun to the player character.<\/p>\n<p>Open the BP_Player blueprint and in the Components tab select the mesh component and from the Add button search for Skeletal Mesh:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7425d00 elementor-widget elementor-widget-image\" data-id=\"7425d00\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"183 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b89a8c181eb6697e48c7adb0c383eb808022ef3f4366fe289dfaf38896739d08.jpeg\" alt=\"183 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-390b52a elementor-widget elementor-widget-text-editor\" data-id=\"390b52a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Give the skeletal mesh name Gun, select it and in the Details tab for the Skeletal Mesh select the SK_FPGun:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f9acd61 elementor-widget elementor-widget-image\" data-id=\"f9acd61\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"184 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/9d611bd6b3cabf1176c14f91420ca0de7fc294268d03ada6bc5ef448034f94fb.jpeg\" alt=\"184 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bb5ee0f elementor-widget elementor-widget-text-editor\" data-id=\"bb5ee0f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The gun is added to the character but it\u2019s located on the feet of the character:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3532f22 elementor-widget elementor-widget-image\" data-id=\"3532f22\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"185 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/7e84246008f8948b65f83ed1521817ac56742ab795af4faadeaccd74dc370059.jpeg\" alt=\"185 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-31ba34a elementor-widget elementor-widget-text-editor\" data-id=\"31ba34a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To place it in the hands of the character we need to select the gun skeletal component, and in the Detals tab for the Sockets click on the folder icon and search for the weapon socket:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b5c565f elementor-widget elementor-widget-image\" data-id=\"b5c565f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"186 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/75955a5c30fbff21e0ee9fd65866667d31f97bc36c91eda49bce42fdb1de5b6f.jpeg\" alt=\"186 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9d8ea20 elementor-widget elementor-widget-text-editor\" data-id=\"9d8ea20\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The weapon socket is defined in the skeletal part of the 3D character model and it\u2019s basically a part of the 3D model with the name weapon.<\/p>\n<p>This is how we add items to 3D models and create the effect of carrying a weapon, a backpack, or something else. And that\u2019s how all games add items to the game characters.<\/p>\n<p>We cover that more in depth in Game Dev Pro Rapid Launch which is an advanced course that only those who enrolled in Game Dev Pro can have access to.<\/p>\n<p>If you want to skyrocket your game dev career and you\u2019re enrolled in Game Dev Pro, send us a message and we\u2019ll give you the link to Rapid Launch, if not you can always enrol in Game Dev Pro by clicking on the link here.<\/p>\n<p>Now that you selected the weapon socket, the weapon is located in the hands of the character:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-deb819b elementor-widget elementor-widget-image\" data-id=\"deb819b\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"187 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/4810b8ef2972d51b39614a641cff3e2922274494ec94c6207733e42f9f344c94.jpeg\" alt=\"187 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ec08603 elementor-widget elementor-widget-text-editor\" data-id=\"ec08603\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Before we preview the animations we\u2019re going to add a muzzle or an actor object and position him where the gun\u2019s muzzle is going to show.<\/p>\n<p>For that, select the gun skeletal component and from the Add button search for the scene component:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e7ec847 elementor-widget elementor-widget-image\" data-id=\"e7ec847\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"189 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3dbdfa0d95fad38d458e2b6e2c3e792123b16d688ee83288c4fcd58ebefc3867.jpeg\" alt=\"189 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-af07f83 elementor-widget elementor-widget-text-editor\" data-id=\"af07f83\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Rename the added scene component to Muzzle, then select it and in the Details tab for the Transform component add the following values:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c9e2a23 elementor-widget elementor-widget-image\" data-id=\"c9e2a23\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"190 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/54ac6f906f92fe577c5acc0f2db7741e1434c8ec340dd63daa7ca1de65fec284.jpeg\" alt=\"190 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-06c4fcc elementor-widget elementor-widget-text-editor\" data-id=\"06c4fcc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This is going to position the muzzle actor right in front of the gun where the muzzle fx is going to show:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-61cea1e elementor-widget elementor-widget-image\" data-id=\"61cea1e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"191 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/02a602aaecefd0fae147e960cc8d8fb2385c5ea73315c6702bbb2f1007bc984d.jpeg\" alt=\"191 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-830d68b elementor-widget elementor-widget-text-editor\" data-id=\"830d68b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now we can preview the animations with the player holding the gun and you\u2019ll see how the animations blend together:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6529743 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"6529743\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-19112f4 elementor-widget elementor-widget-heading\" data-id=\"19112f4\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Player Aiming Functionality<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b8229ae elementor-widget elementor-widget-text-editor\" data-id=\"b8229ae\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To create the aiming funcitonality we first need to create an input action.<\/p>\n<p>Your assingment is to create an input action that will be triggered with the right mouse button. We already done that so you have a guide but we would love if you try to do that on your own.<\/p>\n<p>So inside the Input folder create a new input action:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2f7e763 elementor-widget elementor-widget-image\" data-id=\"2f7e763\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"33 \u2013 Zombie horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d2b686a676a4000d9529818022ee0ebdd8f898d2fd381261aaffe2b8dc36610e.jpeg\" alt=\"33 - Zombie horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3829062 elementor-widget elementor-widget-text-editor\" data-id=\"3829062\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Name it IA_Aiming and add it in the IMC_MovementAndLook:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-77ab457 elementor-widget elementor-widget-image\" data-id=\"77ab457\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"192 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/120beead28945238a8ab63da89ba60285c171f6f88688b599e9446f46f5007a9.jpeg\" alt=\"192 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f2f23cd elementor-widget elementor-widget-text-editor\" data-id=\"f2f23cd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside EventGraph of the BP_Player add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6c1dd02 elementor-widget elementor-widget-image\" data-id=\"6c1dd02\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"193 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e7a9a3f7fb05d35fe0662c6cb37bd445670e20e3b7e8af9229497e251b1ef953.jpeg\" alt=\"193 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-43b115d elementor-widget elementor-widget-text-editor\" data-id=\"43b115d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Next we are going to create a new macro and call it Sprinting:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-50b20b3 elementor-widget elementor-widget-image\" data-id=\"50b20b3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"194 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ad2e51467d64b0ece7456c4f6a137798667bce9049a1be48148b113d7f699246.jpeg\" alt=\"194 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-42f5167 elementor-widget elementor-widget-text-editor\" data-id=\"42f5167\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can think of a macro as a function we can reuse. Select the output node inside the Sprinting macro and create a bool return value and name it Is Sprinting:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e753729 elementor-widget elementor-widget-image\" data-id=\"e753729\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"195 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/544ca0b03a38f4a77ff0b9483f0e3cdefaa3538ec84622ec1c224bb302e8ad26.jpeg\" alt=\"195 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ad3b884 elementor-widget elementor-widget-text-editor\" data-id=\"ad3b884\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We\u2019re going to use character movement to calculate if we are sprinting or not:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7c1e8cb elementor-widget elementor-widget-image\" data-id=\"7c1e8cb\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"196 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/26f033f1f4b266ffe28a97fb673cd19b5640946a9d7aa8fe7e77d0bb8dec462f.jpeg\" alt=\"196 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b392455 elementor-widget elementor-widget-text-editor\" data-id=\"b392455\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>So if the character\u2019s movement max walk speed is greated than 500 we\u2019ll return true \u2013 meaning the player is sprinting.<\/p>\n<p>And we\u2019re going to use this macro to set the max walk speed of the character\u2019s movement when the character starts aiming:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7481e72 elementor-widget elementor-widget-image\" data-id=\"7481e72\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"197 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/152734065dadcaf7c5ad617fa5ffc9ba085ac59fd28d02f378b9a5caae63b734.jpeg\" alt=\"197 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-43b2198 elementor-widget elementor-widget-text-editor\" data-id=\"43b2198\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When the aiming down sights is true, we\u2019ll call the macro we created to test if we are sprinting, if that\u2019s true then we call the unsprint event which we created a few steps ago which is going to reset the rotation chages we made.<\/p>\n<p>Then we simply set the max walk speed to aiming speed because we\u2019re going to slowdown the character when he\u2019s aiming.<\/p>\n<p>And when we release the right mouse button e.g. the Completed event is called on the IA_Aiming we set the max walk speed to the walk speed value.<\/p>\n<p>The last step before we test the player aiming is to make the zoom effect which we\u2019ll do by changing the target arm length of the camera arm component:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0a7c989 elementor-widget elementor-widget-image\" data-id=\"0a7c989\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"198 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ef517525ef975e91b026fb0b8669e4fb36368149f5dbe9480eb57e91861ebee8.jpeg\" alt=\"198 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-498e3bc elementor-widget elementor-widget-text-editor\" data-id=\"498e3bc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c78148a elementor-widget elementor-widget-html\" data-id=\"c78148a\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/w7m-uf3p\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7f54969 elementor-widget elementor-widget-text-editor\" data-id=\"7f54969\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And this is how the aiming functionality looks like when we test the game:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a52fd98 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"a52fd98\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0c1587d elementor-widget elementor-widget-text-editor\" data-id=\"0c1587d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The functionality we built in this part of the tutorial is slowing down the character when we aim and we explained how that happens above.<\/p>\n<p>But you also see the aiming animation playing whenever we aim and it\u2019s because of the Aiming Down Sights parameter which is set to true or false depending on if we are aiming or not.\u00a0<span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">And depending on the true or false value we play the aiming animation.<\/span><\/p>\n<p>Another thing is that the walk animation is being played while we are aiming which is the result of the blending nodes we used in the animation which we explained how they work when we created them a few steps back.<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-cdd0cac elementor-widget elementor-widget-heading\" data-id=\"cdd0cac\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Drawing The Crosshair On The Screen<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-589e2d8 elementor-widget elementor-widget-text-editor\" data-id=\"589e2d8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>While or player can aim, we don\u2019t see where he\u2019s aiming because we don\u2019t have a crosshair on the screen.<\/p>\n<p>To add the crosshair, select the Content folder, then Right Click and Show In Expolorer:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-61b4876 elementor-widget elementor-widget-image\" data-id=\"61b4876\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"199 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/a0b1600bd2b8f448f77388612c5a99a2f9dbdac28b77eb2ff6bd709880e7ad77.jpeg\" alt=\"199 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c7d6998 elementor-widget elementor-widget-text-editor\" data-id=\"c7d6998\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside the zombie horde assets folder you\u2019ll find a folder named Crosshair. Copy and paste that folder inside the Content folder that we just opened:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bb04184 elementor-widget elementor-widget-image\" data-id=\"bb04184\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"200 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3391d0330d3b299a6633a7d54b60a704849ef2a6eb9b743899d4a83bd7b4fd29.jpeg\" alt=\"200 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ca344ac elementor-widget elementor-widget-text-editor\" data-id=\"ca344ac\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When you do that, you\u2019ll see the Crosshair folder inside the Content folder in Unreal Engine:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-18aa864 elementor-widget elementor-widget-image\" data-id=\"18aa864\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"201 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ac1e25334e6133a4881f0e73b3f3e093e316bce779d642870bdc0f6fac5cdf95.jpeg\" alt=\"201 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f44bf8b elementor-widget elementor-widget-text-editor\" data-id=\"f44bf8b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside the FPS_ZombieHorde folder create a new folder and name it HUD. Inside the HUD folder Right Click -&gt; Blueprint Class and in the search filter for hud:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e4e285c elementor-widget elementor-widget-image\" data-id=\"e4e285c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"202 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/bd40b368c86421ad763d8387c2e27b43b0f1e61d7d0edf3862a18eee5042e14c.jpeg\" alt=\"202 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e353184 elementor-widget elementor-widget-text-editor\" data-id=\"e353184\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Select the HUD class and create a new bluprint, name it Crosshair_HUD and open it in the editor. Inside the event graph for the Crosshair_HUD add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d881058 elementor-widget elementor-widget-image\" data-id=\"d881058\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"203 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/71b5e5efd43df12d06bb84048e27449681a6c2d88004cb83970a03b7dec223be.jpeg\" alt=\"203 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e8cdfe3 elementor-widget elementor-widget-template\" data-id=\"e8cdfe3\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor382737<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor382737 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor382737 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor382737\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-708429f elementor-widget elementor-widget-text-editor\" data-id=\"708429f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The Draw Hud node is going to draw the hud and it has the X and Y coordinates of the screen. Because we want to draw the crosshair in the center of the screen we\u2019re diving X and Y by 2 which is going to give us the center of the screen coordinate.<\/p>\n<p>To draw the crosshair we use the Draw Texture node and we pass the texture we want to draw, X and Y coordinates, and the tint color.<\/p>\n<p>For the texture parameter make sure that you select the crosshair image we imported:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b133441 elementor-widget elementor-widget-image\" data-id=\"b133441\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"204 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/1aad67a71b332705cae07fb888f8689f58cd2bea9a49353822a270bc18a41c5f.jpeg\" alt=\"204 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bee0832 elementor-widget elementor-widget-text-editor\" data-id=\"bee0832\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To draw the HUD on the screen, we need to go to Project Settings -&gt; Maps &amp; Modes and for the HUD class select the Crosshair_HUD:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ea8d310 elementor-widget elementor-widget-image\" data-id=\"ea8d310\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"205 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/471ca2fe80e1c7568ddbd6900023e15f7f11ead11a07461c2ce20ae0a6760cbb.jpeg\" alt=\"205 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0a68031 elementor-widget elementor-widget-text-editor\" data-id=\"0a68031\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>If we run the game now, we\u2019ll not see the hud on the screen. And the reason why is because we didn\u2019t set the width and the height of the hud inside the Draw Texture node.<\/p>\n<p>If you hover over the FirstPersonCrosshair asset we imported you\u2019ll notice that its dimensions are 16\u00d716:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e881db9 elementor-widget elementor-widget-image\" data-id=\"e881db9\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"206 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3a328dacafd6f27d12e028877818177a66526a6cc842d530e683864eff96e363.jpeg\" alt=\"206 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3b642b9 elementor-widget elementor-widget-text-editor\" data-id=\"3b642b9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This means we need to specify these values in the Draw Texture node:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0fce4d8 elementor-widget elementor-widget-image\" data-id=\"0fce4d8\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"207 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/7fbafa31448e3827e567dd2a9b4ddfa1f45cb2b3ede673bd3e66c3ee45a82cae.jpeg\" alt=\"207 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-14015a0 elementor-widget elementor-widget-text-editor\" data-id=\"14015a0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Screen W and Screen H represent the width and the height of the texture on the screen where it will be drawn. And the Texture UWidth and Texture VHeight are the scale that\u2019s why we set the value to 1 meaning it will have a full width and height.<\/p>\n<p>When we run the game now, we\u2019ll see the crosshair drawn in the middle of the screen:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ceb5b67 elementor-widget elementor-widget-image\" data-id=\"ceb5b67\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"208 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3dc5c0f83d1b66edf86b008919abec8069f61dac9460360db844b8a2013497ca.jpeg\" alt=\"208 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-570fb02 elementor-widget elementor-widget-heading\" data-id=\"570fb02\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Player Shooting Functionality<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-039c6df elementor-widget elementor-widget-text-editor\" data-id=\"039c6df\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To create the shooting we first need to create an input action. So create a new input action, name it IA_Shoot, add it in the IMC_MovementAndLook and set it to trigger when the Left Mouse Button is pressed:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4be1ae1 elementor-widget elementor-widget-image\" data-id=\"4be1ae1\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"209 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/fc5a606fdcd4869ec5d8f38c8620221755914c732ce6d0ce914d682a5c6f7514.jpeg\" alt=\"209 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5c9ab51 elementor-widget elementor-widget-text-editor\" data-id=\"5c9ab51\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Since the shooting functionality is a little long, I\u2019ll add it piece by piece and explain every step along the way.<\/p>\n<p>We\u2019ll start with the IA_Shoot input action:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-25341be elementor-widget elementor-widget-image\" data-id=\"25341be\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"210 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/87c82ec9b1b4a9f57631d25f42abc723fb6ee4507b34f8fdf7881d8b52d62229.jpeg\" alt=\"210 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c2939cc elementor-widget elementor-widget-text-editor\" data-id=\"c2939cc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When we press the Left Mouse button the IA_Shoot will be triggered, specifically the Started event.<\/p>\n<p>When that happens we\u2019ll set the LMBPressed to true, and then we\u2019ll enter a branch where we\u2019ll test if Can Shoot is true. If it\u2019s true, then we\u2019ll move forward to perform the shoot.<\/p>\n<p>When we release the Left Mouse button the Completed event of the IA_Shoot input action will be triggered. And for that, we\u2019ll just set the LMBPresset to false.<\/p>\n<p>Next, we\u2019re going to test the following condition:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c1fba0a elementor-widget elementor-widget-image\" data-id=\"c1fba0a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"211 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/5330a05764e93eb4965920c8988a4c6539fc48961a996f0561d08f60f24c968e.jpeg\" alt=\"211 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f7435b8 elementor-widget elementor-widget-text-editor\" data-id=\"f7435b8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>If we can shoot, we\u2019ll enter a branch. The condition for that branch is if we are NOT sprinting and if the Current Ammo is greater than 0, meaning we have bullets to shoot.<\/p>\n<p>Both of these booleans need to true, which is denoted with the AND node, so that the branch condition will be true.<\/p>\n<p>We\u2019ve also created a custom event and named it Shoot because we\u2019ll call it at the end of the shooting functionality if the Left Mouse button is still pressed after we can shoot again.<\/p>\n<p>Moving forward if the previous condition is true then:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-36f70d5 elementor-widget elementor-widget-image\" data-id=\"36f70d5\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"212 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/deb722a726e3196b8fed7a3f0226be4757a32b3c360f8a7cb3941d0ebbb237a2.jpeg\" alt=\"212 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bfb8168 elementor-widget elementor-widget-text-editor\" data-id=\"bfb8168\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When we shoot we need to subtract from the Current Ammo value because every time we shoot one bullet we\u2019ll have one bullet less.<\/p>\n<p>Whenever we shoot, we are going to create a muzzle. To do that we add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f71717d elementor-widget elementor-widget-image\" data-id=\"f71717d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"213 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f81047f17ce1f706396ef81302287ed0cc81d0d72d3e031bd3dc2cfc69140f4e.jpeg\" alt=\"213 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ff698cb elementor-widget elementor-widget-text-editor\" data-id=\"ff698cb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We\u2019re using the Muzzle actor we created a few steps ago. The Muzzle actor is located right in front of the gun, or to be more precize where the bullet exits.<\/p>\n<p>We use the Spawn Emitter at Location node to create an emitter e.g. a particle effect at the location of the Muzzle actor and using it\u2019s rotation.<\/p>\n<p>We also play the shoot sound effect at the location of the Muzzle actor by using the Play Sound at Location node.<\/p>\n<p>For the Emitter Template we use the P_Explosion1 which comes with the Starter Content which we checked at the beginning when we created the project.<\/p>\n<p>You can simply filter for it in the Emitter Template drop-down list:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c4e9bb4 elementor-widget elementor-widget-image\" data-id=\"c4e9bb4\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"214 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/56b0f7e7904b431015cf69c038b9eb8d03c0d33227b0396a25fa00fd54d0687c.jpeg\" alt=\"214 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b864e14 elementor-widget elementor-widget-text-editor\" data-id=\"b864e14\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And for the sound, we\u2019re going to use ShotSoundCue which you can filter in the search for the Sound in the Play Sound at Location node:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fc89374 elementor-widget elementor-widget-image\" data-id=\"fc89374\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"215 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/bd459b858de15d4e838bced5c4a679fbaa0297dd896038fb283c84e69ca92e88.jpeg\" alt=\"215 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1b7c769 elementor-widget elementor-widget-text-editor\" data-id=\"1b7c769\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>One cool effect that we\u2019ll implement is camera shake when we shoot, which will make the shooting look more realistic. And we\u2019re going to do that with the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0f65355 elementor-widget elementor-widget-image\" data-id=\"0f65355\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"216 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/9c2774cb70589b370a12c4e4318a27f907f3c749dd65e487b93f5de808b04938.jpeg\" alt=\"216 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6136dd7 elementor-widget elementor-widget-text-editor\" data-id=\"6136dd7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>If you can\u2019t find the Client Start Camera Shake node, uncheck the Context Sensitive in the search node:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c80acfb elementor-widget elementor-widget-image\" data-id=\"c80acfb\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"217 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/47ff9e0e8229f18bbe226d975dd67eb30200fbe7c94a01fbae21f4f61f269670.jpeg\" alt=\"217 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2a21c01 elementor-widget elementor-widget-text-editor\" data-id=\"2a21c01\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>For the shake effect we\u2019ll use CS Shoot, which you can find in the drop-down list for the Shake option:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-961b27f elementor-widget elementor-widget-image\" data-id=\"961b27f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"218 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f283d41bd18d55bc1a139768b2f09afeb27687e3e0c29861cc85f45b8332c2a5.jpeg\" alt=\"218 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-319b305 elementor-widget elementor-widget-text-editor\" data-id=\"319b305\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To simulate a bullet hit, we\u2019re going to use raycasting with the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-78a4e26 elementor-widget elementor-widget-image\" data-id=\"78a4e26\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"219 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e7ce10912eb5831fde728fad3150cf70add9f238c7f5a6a72b1bad5512b39086.jpeg\" alt=\"219 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e69d9f2 elementor-widget elementor-widget-text-editor\" data-id=\"e69d9f2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Raycasting means we\u2019re drawing an invisible line in the direction we specify and if anything collides with that line we can detect it.<\/p>\n<p>Line Trace By Channel will draw the invisible line using the Start parameter as the starting position of the line, and using the End parameter as the end position.<\/p>\n<p>For the starting position we\u2019re using the Player Camera\u2019s location, which is basically the camera under the Camera Arm component for the player:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7deff7a elementor-widget elementor-widget-image\" data-id=\"7deff7a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"220 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0c93f6a25ed670e3c3ffbc0d62bb51c172d5ea99809c629a3068a4294a9c8e8d.jpeg\" alt=\"220 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8c05413 elementor-widget elementor-widget-text-editor\" data-id=\"8c05413\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>I renamed the camera so that it\u2019s easier to understand which components we\u2019re using.<\/p>\n<p>So the starting position is the player\u2019s camera location, the end position is the forward vector of the player\u2019s camera multiplied with the Shooting Multiplier variable which we created because we needed to multiply the forward vector so that the line is drawn from the player\u2019s camera location in the forward direction.<\/p>\n<p>This is the value of the Shooting Multiplier variable:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-76bfbc1 elementor-widget elementor-widget-image\" data-id=\"76bfbc1\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"221 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0b96ce535f0236f22b7c3d228a182983782dfc9fb730539b6d0ab9dae6189954.jpeg\" alt=\"221 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e6b724d elementor-widget elementor-widget-text-editor\" data-id=\"e6b724d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This means that the line drawn will be as long as the value of the Shooting Multiplier variable.<\/p>\n<p>After we draw the line, we\u2019re going to do the following:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0bd82fe elementor-widget elementor-widget-image\" data-id=\"0bd82fe\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"222 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/bbca02a7198035db75ae1e768d542f526ace5ae6cdd2e94f4d708c4c71052905.jpeg\" alt=\"222 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b3c3c6e elementor-widget elementor-widget-text-editor\" data-id=\"b3c3c6e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We are going to enter a sequence and in the sequence we can specify operations that will be executed in the order in which we place them.<\/p>\n<p>The first operation in this sequence is going to disable the player from shooting by setting the Can Shoot to false.<\/p>\n<p>This will make the player shoot in time intervals instead of making him shoot hundreds of times in a second if we didn\u2019t control the shoot rate.<\/p>\n<p>For that we\u2019re using the Fire Rate variable and we are going to wait using the Delay function. When the wait is over we are going to set Can Shoot back to true, and we are going to test if the Left Mouse Button is pressed, if that is true we are going to call the Shoot custom even which we created here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-397a043 elementor-widget elementor-widget-image\" data-id=\"397a043\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"223 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0aa5dd3c031a505c7ee0e0e054bdd364d1d35d74e899cea7822ea13c86861721.jpeg\" alt=\"223 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4b01d68 elementor-widget elementor-widget-text-editor\" data-id=\"4b01d68\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>By calling the Shoot event we are skipping the first grop of testing which is setting the LMBPressed variable to true \u2013 meaning we are pressing the Left Mouse button so the shooting continues.<\/p>\n<p>And finally, the last thing we\u2019ll do is create an explosion effect where the line trace hits with the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-91856d3 elementor-widget elementor-widget-image\" data-id=\"91856d3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"224 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/48507f2b7d23190db2ff6499441fa6db46f5506fe2bba5143299cd935b7e54dd.jpeg\" alt=\"224 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-889c19c elementor-widget elementor-widget-text-editor\" data-id=\"889c19c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the second operation first we\u2019ll test if the Return Value of the Line Trace By Channel is true, if that is the case it means the line has hit an actor.<\/p>\n<p>When that happens we are going to use Spawn Emitter at Location node to spawn the P_Explosion particle which you can select from the Emitter Template the same way we did for the muzzle effect a few steps back.<\/p>\n<p>The location where we will spawn that emitter is the location of the hit result. And you can access that location by draging a node from the Out Hit parameter and selecting Break Hit Result:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b628c0e elementor-widget elementor-widget-image\" data-id=\"b628c0e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"225 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/1df164ec4af2c161b08ac7059722d654c7321527c93600a8ef4b9d349a8d449e.jpeg\" alt=\"225 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-39b1595 elementor-widget elementor-widget-text-editor\" data-id=\"39b1595\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the full node structure from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fab8fb3 elementor-widget elementor-widget-html\" data-id=\"fab8fb3\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/x5smu795\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-852f6a5 elementor-widget elementor-widget-text-editor\" data-id=\"852f6a5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>So now, let\u2019s the test the shooting functionality:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c8bf9ed elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"c8bf9ed\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-141d038 elementor-widget elementor-widget-text-editor\" data-id=\"141d038\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The shooting works, and we spawn the explosion particles where the line trace hits.<\/p>\n<p>But we do have one issue and that is the bullet that we shoot or the explosion effect is not spawn in the middle of the crosshair, and you can see that at the end of the above video.<\/p>\n<p>The issue here is because of the crosshair asset, which has the 16\u00d716 dimensions which we already shown:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-de0b6c4 elementor-widget elementor-widget-image\" data-id=\"de0b6c4\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"206 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3a328dacafd6f27d12e028877818177a66526a6cc842d530e683864eff96e363.jpeg\" alt=\"206 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-79891f3 elementor-widget elementor-widget-text-editor\" data-id=\"79891f3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Because of the 16\u00d716 dimensions, we need to add two more nodes in the calculation of the position where the crosshair will be drawn inside the Crosshair_HUD:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4519bf0 elementor-widget elementor-widget-image\" data-id=\"4519bf0\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"226 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/a4c812f0aa9531fba02dc0955f93f2363836815821efcb25a0a7b493edbaea91.jpeg\" alt=\"226 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f53fdac elementor-widget elementor-widget-text-editor\" data-id=\"f53fdac\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>So when we calculate the center of the screen by dividing Size X and Size Y by 2, we are also subtracting 8 from both which totals 16 and that was the missing piece of the puzzle which will draw the crosshair exactly in the center of the screen.<\/p>\n<p>So when we test the shooting now, this is how it looks like:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fde8d50 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"fde8d50\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6226439 elementor-widget elementor-widget-template\" data-id=\"6226439\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor398782<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor398782 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor398782 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor398782\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ed27ed6 elementor-widget elementor-widget-heading\" data-id=\"ed27ed6\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Reloading The Gun<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2891e92 elementor-widget elementor-widget-text-editor\" data-id=\"2891e92\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>While the shooting works we have a limited amount of bullets \u2013 30 to be precise which is the default value of the MaxAmmo and CurrentAmmo variables.<\/p>\n<p>So when we shoot 30 times we are not able to shoot again until we close the game and play it from start.\u00a0<span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">To fix that we are going to implement the reloading functionality.<\/span><\/p>\n<p><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">Create a new Input Action, name it IA_Reload and add it in the IMC_MovementAndLook:<\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c249032 elementor-widget elementor-widget-image\" data-id=\"c249032\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"227 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3ef02b54363a403adfba720443bcb4f035223f14c279037db41277dec9fcb7ce.jpeg\" alt=\"227 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fda97cb elementor-widget elementor-widget-text-editor\" data-id=\"fda97cb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When we press the reload button, first we\u2019ll check if we are already playing the reload animation:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1c77d42 elementor-widget elementor-widget-image\" data-id=\"1c77d42\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"228 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/8f897ab4da645afc98e4d10c75dc4816a552c908e232b8ef3d97fe8d8de32ed1.jpeg\" alt=\"228 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9bbf604 elementor-widget elementor-widget-text-editor\" data-id=\"9bbf604\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The mesh is the mesh component of the player character where the BP_Player_Animation is attached:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3e63b67 elementor-widget elementor-widget-image\" data-id=\"3e63b67\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"229 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/793f1774d7098952cf25a126c4e0861b5f549fb2b54e7e16cd7a906b3d6c1133.jpeg\" alt=\"229 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c04804d elementor-widget elementor-widget-text-editor\" data-id=\"c04804d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The reload animation is called Reload_Rifle_Hip_Montage and you can search it from the drop-down list of the Montage Is Playing Node:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-09986cd elementor-widget elementor-widget-image\" data-id=\"09986cd\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"230 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/6952454d8c79ead6cd238dbd8996f3981f1ebbae773ff735c6dd62f3865f7300.jpeg\" alt=\"230 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-83f4fa8 elementor-widget elementor-widget-text-editor\" data-id=\"83f4fa8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The reason why we are testing if we are currently playing the reload animation is because if we are playing the animation then we\u2019ll wait for it to end and not play the same animation twice at the same time.<\/p>\n<p>So if we are not playing the reload animation we\u2019ll do the following:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6521fae elementor-widget elementor-widget-image\" data-id=\"6521fae\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"231 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d03b22948b194e1df1915b29a15ed75f411fce5f9b5ec3f63973bad266cba9c5.jpeg\" alt=\"231 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a4a668d elementor-widget elementor-widget-text-editor\" data-id=\"a4a668d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We are testing if the current ammo is less than the max ammo. Because if the current ammo is the same as max ammo then there\u2019s no need to reload the gun because we are already at the full ammo capacity.<\/p>\n<p>But if the current ammo is less than the max ammo then:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9b24ceb elementor-widget elementor-widget-image\" data-id=\"9b24ceb\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"232 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/39e9c7025b594d9806b8881ea639b57586107d08711848bfb58c01dbdd7ea54c.jpeg\" alt=\"232 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9d9399e elementor-widget elementor-widget-text-editor\" data-id=\"9d9399e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>First we\u2019ll set the Can Shoot to false because we don\u2019t want to allow the player to shoot while we are reloading.<\/p>\n<p>Next we\u2019ll play the reload animation with the Montage Play node and in the Montage To Play drop-down list select the same Reload_Rifle_Hip_Montage.<\/p>\n<p>After that we go in a sequence:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7520102 elementor-widget elementor-widget-image\" data-id=\"7520102\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"233 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3cd83c20272509d1ec5add321257ebecc4835fbbb39208a3e719a117336af870.jpeg\" alt=\"233 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-033e09a elementor-widget elementor-widget-text-editor\" data-id=\"033e09a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the first sequence execution we use the Delay node to delay 1.8 seconds while the reload animation is playing. Then we set the Current Ammo to be equal as the Max Ammo and finally we set allow the play to shoot again with the Can Shoot variable.<\/p>\n<p>In the second sequence execution we delay 0.4 seconds and we play the reload sound at the player actor\u2019s location using the Play Sound at Location node and passing the AssaultRifle_Reload sound.<\/p>\n<p>You can copy the whole node structure from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b30f771 elementor-widget elementor-widget-html\" data-id=\"b30f771\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/ip5a4olz\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0e1f988 elementor-widget elementor-widget-text-editor\" data-id=\"0e1f988\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We can run the game and test the reload animation and functionality:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1c8c87f elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"1c8c87f\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c10c082 elementor-widget elementor-widget-heading\" data-id=\"c10c082\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Animating The 3D Parasite Model<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-081843c elementor-widget elementor-widget-text-editor\" data-id=\"081843c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The parasite model we\u2019ll use in this game is downloaded from www.mixamo.com:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-89e78b3 elementor-widget elementor-widget-image\" data-id=\"89e78b3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"234 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/62b1ab5e43ae97fe22442059cf8e1f0cd1adff1fe1d17340d1af6c90252c40f2.jpeg\" alt=\"234 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a4f993d elementor-widget elementor-widget-text-editor\" data-id=\"a4f993d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Mixamo is a really useful site for game developer becuase all the 3D models are free, plus you can animate them and you can even upload your own 3D models, rig them, and animate them.<\/p>\n<p>We\u2019ll not go into the details how to do all that, we\u2019ll create a separate post, if we didn\u2019t do that already, where we\u2019ll demonstrate in detail how to use the mixamo website to get 3D models for your game.<\/p>\n<p>As for the parasite model you can find it in the assets folder which you downloaded for this tutorial.<\/p>\n<p>Inside the\u00a0 FPS_ZombieHorde create a new folder and name it Parasite. In the assets folder find the Parasite Model folder and drag the following file in the Parasite folder in Unreal Engine:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-543e70a elementor-widget elementor-widget-image\" data-id=\"543e70a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"235 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0b7e13628aac83aee7639c293fc11f8d9e0a4ac0a97890609ee6b49a5c78d268.jpeg\" alt=\"235 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a6dbda8 elementor-widget elementor-widget-text-editor\" data-id=\"a6dbda8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the next window make sure that the following options are checked and then click Import All button:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e2b61f9 elementor-widget elementor-widget-image\" data-id=\"e2b61f9\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"236 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/a6ed4f72e5b3312e0265b80e99447df2d3475e19bbc6c8e4a9b213ba29071f24.jpeg\" alt=\"236 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-10040d3 elementor-widget elementor-widget-text-editor\" data-id=\"10040d3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now that we imported the 3D model we can import his animations by dragging them in the same folder:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fb5de53 elementor-widget elementor-widget-image\" data-id=\"fb5de53\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"237 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d29055d65c29c3cbd13d817ed449c344a2b6ed8913253cd4113352828e801731.jpeg\" alt=\"237 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4d3d035 elementor-widget elementor-widget-text-editor\" data-id=\"4d3d035\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the next window click the Import All button:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f448298 elementor-widget elementor-widget-image\" data-id=\"f448298\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"238 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/aa74a1ce1d0767408bfbcada9465872edef914ed4ac4f34011d31cf722fcb5b5.jpeg\" alt=\"238 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f9da541 elementor-widget elementor-widget-text-editor\" data-id=\"f9da541\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Before we animate the parasite we need to fix one problem. If you open the skeleton of the model:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d908e94 elementor-widget elementor-widget-image\" data-id=\"d908e94\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"239 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f6d9cb2b957689a3aa12e395ffa0715218cb21e07f5c6c231d703745fa8e3b85.jpeg\" alt=\"239 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-908337d elementor-widget elementor-widget-text-editor\" data-id=\"908337d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You\u2019ll notice that the parasite model is transparent:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4619718 elementor-widget elementor-widget-image\" data-id=\"4619718\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"240 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/a9667da10865bbb76db2c0b38f0881e28e22be7c574f0652cceb0a827872ca2b.jpeg\" alt=\"240 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ae88cf9 elementor-widget elementor-widget-text-editor\" data-id=\"ae88cf9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To fix this issue, we need to open the material of the parasite model:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-342ce5f elementor-widget elementor-widget-image\" data-id=\"342ce5f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"241 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f329e981a9f4d63a620d5a58bed34b18560f70b8800ac69ede1afaf5b62c4f1e.jpeg\" alt=\"241 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8450971 elementor-widget elementor-widget-text-editor\" data-id=\"8450971\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside the material editor we need to select the parasitezombie_Material and in the Material tab change the Blend Mode option from Translucent to Masked:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7bef11f elementor-widget elementor-widget-image\" data-id=\"7bef11f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"242 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e374fb39e2c9ad390279e34e5399b43bd7139c42f85d534a2312ed6a4ec8435d.jpeg\" alt=\"242 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0ec1f1d elementor-widget elementor-widget-text-editor\" data-id=\"0ec1f1d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When you do that, press the Save button at the top left corner:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ac0d08d elementor-widget elementor-widget-image\" data-id=\"ac0d08d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"243 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/bea5e370ad64d0c611384a0029e255413f98151ee620828f2107684e72585a18.jpeg\" alt=\"243 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5a14de9 elementor-widget elementor-widget-text-editor\" data-id=\"5a14de9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now when we open the skeleton of the parasite model again we\u2019ll see that the 3D model is not transparent anymore:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d031919 elementor-widget elementor-widget-image\" data-id=\"d031919\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"244 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/07c95765423626eade4a120bd376bc1dccade6b25a86dca0c5e3a1f086523b8e.jpeg\" alt=\"244 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-af61f02 elementor-widget elementor-widget-text-editor\" data-id=\"af61f02\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Moving forward we are going to create the parasite blueprint and it\u2019s animation.<\/p>\n<p>Inside the FPS_ZombieHorde folder create a new folder, name it Parasite_Blueprints and create a new blueprint class which inherits from the character class:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3b6e4b2 elementor-widget elementor-widget-image\" data-id=\"3b6e4b2\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"16 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0b3337a8af4f29a8672ac1f81204535336d41b1a6b86b3fb8de6cb8d32430473.jpeg\" alt=\"16 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ba42d91 elementor-widget elementor-widget-text-editor\" data-id=\"ba42d91\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Name the blueprint BP_Parasite open it in the editor and do the following:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7f5a9b7 elementor-widget elementor-widget-image\" data-id=\"7f5a9b7\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"245 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b9bce16df639b09fdb96e7391354639036e5a67015f76c867cb7d9bb308d7127.jpeg\" alt=\"245 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-370e3ae elementor-widget elementor-widget-text-editor\" data-id=\"370e3ae\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>For the mesh model select the parasite we imported. Inside the Transform component for the Z axis set the value to -95 and for the Z rotation set the value 270.<\/p>\n<p>Next, select the Capsule component and for the height set the value to 93 and for the radius set the value 21:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ffe9a42 elementor-widget elementor-widget-image\" data-id=\"ffe9a42\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"246 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/5a96600facd3cce3c1424bdcdd38432e82c36b5b9af3d0ba83845aef44931f9d.jpeg\" alt=\"246 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4600d3a elementor-widget elementor-widget-text-editor\" data-id=\"4600d3a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now inside the Parasite_Blueprints folder create a new animation blueprint:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e0d2719 elementor-widget elementor-widget-image\" data-id=\"e0d2719\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"82 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/648b59b0e45ad999af3de67a65992295c0fbaada84af2fc92827f152674e7b40.jpeg\" alt=\"82 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-73e16a1 elementor-widget elementor-widget-text-editor\" data-id=\"73e16a1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>For the skeleton select the parasite model skeleton:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-27b6636 elementor-widget elementor-widget-image\" data-id=\"27b6636\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"247 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f787173d4901661498117845811c2e641dd492c836d41f59c0e6eca62d3da871.jpeg\" alt=\"247 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7cb9c8a elementor-widget elementor-widget-text-editor\" data-id=\"7cb9c8a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Give the new blueprint name BP_Parasite_Animation and then create a new blend state:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5ac12d4 elementor-widget elementor-widget-image\" data-id=\"5ac12d4\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"92 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d6fd32a9b53efaa41f4895a46b5f20430f37978dc5096fff40b7ffdd80f9d3be.jpeg\" alt=\"92 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3d0e34d elementor-widget elementor-widget-text-editor\" data-id=\"3d0e34d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Select the parasite skeleton:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f94cccf elementor-widget elementor-widget-image\" data-id=\"f94cccf\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"248 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e75dfcec0ff09f25b8f13b9dc4811345a0eab3d0f4ccf96217386017a091faf2.jpeg\" alt=\"248 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f941de5 elementor-widget elementor-widget-text-editor\" data-id=\"f941de5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Name the blend space Idle_Run_Enemy and open it in the editor. In the axis settings set the following values for the horizontal axis:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f28a0bf elementor-widget elementor-widget-image\" data-id=\"f28a0bf\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"249 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/4844f7f0195fc8043aba6adc2438a8f47d10bf5d5a5ef79c4db5e495f7d319cf.jpeg\" alt=\"249 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-be91c53 elementor-widget elementor-widget-text-editor\" data-id=\"be91c53\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>From the Asset Browser drag the Idle and Running animation in the following places:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fed4e6d elementor-widget elementor-widget-image\" data-id=\"fed4e6d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"250 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e6628bd7c0f0c66d90fa5f545bcf6d28e8b0a0590ae8e2afb422398c5651a297.jpeg\" alt=\"250 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ef69307 elementor-widget elementor-widget-text-editor\" data-id=\"ef69307\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside the BP_Parasite_Animation create a new state machine:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b6b66fc elementor-widget elementor-widget-image\" data-id=\"b6b66fc\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"84 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ef2408317d44bf7e787693236f8e348ecf2779d77250f9a954266e9b4d5c3c94.jpeg\" alt=\"84 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d65fc38 elementor-widget elementor-widget-text-editor\" data-id=\"d65fc38\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Name it Default and inside create a new state:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3a55fdc elementor-widget elementor-widget-image\" data-id=\"3a55fdc\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"86 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0b90429b98040bf4069c3f22587db94bfbcd2e5415b8efd883946c02f696b6d4.jpeg\" alt=\"86 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c86e572 elementor-widget elementor-widget-text-editor\" data-id=\"c86e572\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Name the state Idle \/ Run. Create a new float variable, name it Speed and plug it in the Idle_Run_Enemy blend space:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-199932b elementor-widget elementor-widget-image\" data-id=\"199932b\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"251 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/1c063a3f52b81e2c708a0098874d13c95cc94f63c458e0f84fb1cd8aaf6803dd.jpeg\" alt=\"251 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-dc419c0 elementor-widget elementor-widget-text-editor\" data-id=\"dc419c0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Also make sure that the Default state machine is plugged in the output pose:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-674f9fc elementor-widget elementor-widget-image\" data-id=\"674f9fc\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"252 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/2ac6c4930fab23ca1dcfe58d8ab839977ed0a89d90ad2bb86078410868d084d0.jpeg\" alt=\"252 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4318f0f elementor-widget elementor-widget-text-editor\" data-id=\"4318f0f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And lastly, set the BP_Parasite_Animation as the animation blueprint for the parasite mesh inside the BP_Parasite:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-cd499c5 elementor-widget elementor-widget-image\" data-id=\"cd499c5\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"253 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/204255fb0cd0e82ffe2342fe32c9509e0b7530fad88aa3a382e1e4b80c9601a4.jpeg\" alt=\"253 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d733f51 elementor-widget elementor-widget-template\" data-id=\"d733f51\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor400021<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor400021 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor400021 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor400021\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d95e6cf elementor-widget elementor-widget-heading\" data-id=\"d95e6cf\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Creating The Enemy AI System<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-aa12c61 elementor-widget elementor-widget-text-editor\" data-id=\"aa12c61\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To create the enemy AI system first we are going to create the variables we\u2019ll need for that inside the BP_Parasite:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-604e34c elementor-widget elementor-widget-image\" data-id=\"604e34c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"254 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/bd0ff7e560b85a5ec379f174a55c6db7f0b708c20a7a682a90aeb2c9ef0c345d.jpeg\" alt=\"254 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-29da8b7 elementor-widget elementor-widget-text-editor\" data-id=\"29da8b7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We are also going to set the initial values for the following variables:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7530f8f elementor-widget elementor-widget-image\" data-id=\"7530f8f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"255 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/5d4242463484d9d478839a326ad5eb62a545d45fd544bf4d451c694d42f32ca7.jpeg\" alt=\"255 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2400286 elementor-widget elementor-widget-image\" data-id=\"2400286\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"256 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e8fe15832e43e4db99feebd21930840196a1791df51f9a46906261bc6f3b9d50.jpeg\" alt=\"256 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d4f4d1f elementor-widget elementor-widget-image\" data-id=\"d4f4d1f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"257 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/5da982e779fd4f8cad4827271a02c9afa6df7da76f5c922d584ea0ce0817a8a4.jpeg\" alt=\"257 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-16e6815 elementor-widget elementor-widget-image\" data-id=\"16e6815\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"258 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0abbc14784fd1c6e05d82e730073b8e1de6380f71dfc1be06e7293ebe1730e5d.jpeg\" alt=\"258 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-55e9342 elementor-widget elementor-widget-image\" data-id=\"55e9342\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"259 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/a3ad992b02172fc9f76a66621a1e846de464179719547feea57ec66b136adc01.jpeg\" alt=\"259 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d9fd322 elementor-widget elementor-widget-image\" data-id=\"d9fd322\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"260 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/2db473ce803274fcc3480712e7437c9fa7242e94c45aa12197d083e3dd60b53a.jpeg\" alt=\"260 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bea739e elementor-widget elementor-widget-text-editor\" data-id=\"bea739e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Other variables are going to have default values. Next, inside the Event Graph we are going to create the enemy AI behavior starting with:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7ada57a elementor-widget elementor-widget-image\" data-id=\"7ada57a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"261 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b5a06e632655d4d6b9fcb3a748e9a5e4c57b183ec6489c1c604c8c8c09b597eb.jpeg\" alt=\"261 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b2513e3 elementor-widget elementor-widget-text-editor\" data-id=\"b2513e3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We created a custom event and named it Chase Player. When we call that custom event first we\u2019ll test if the enemy has died, if that\u2019s false then we\u2019ll call the AI Move To node which takes a pawn \u2013 the pawn which will be moved, in this case it\u2019s the parasite and that\u2019s why we got a reference to self because the variable self referst to the BP_Parasite.<\/p>\n<p>The Target Actor parameter is the target to which AI is going to move, in our case the player character.<\/p>\n<p>And the Acceptance Radius which is set to 100 is the radius range where the AI is going to stop e.g. when the AI gets 100 units close to the Target Actor it will stop moving.<\/p>\n<p>So when we reach the player character we are going to attack him:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ec3b284 elementor-widget elementor-widget-image\" data-id=\"ec3b284\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"262 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3b9a6bc3edea7f59f0f0e1eecafe698e636309e9649ada17ae593b05d6896dfb.jpeg\" alt=\"262 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-355e18e elementor-widget elementor-widget-text-editor\" data-id=\"355e18e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>First you\u2019ll notice that the attack will happen only for the On Success event of the AI Move To, because only if we get to the player and the enemy is within his reach we\u2019ll attack.<\/p>\n<p>In case if the enemy fails to reach the player, then the On Fail event will be trigger and in that case we\u2019re calling the Chase Player custom event to repeat the process and make the enemy chase the plaeyr again.<\/p>\n<p>Inside the On Success first we\u2019re testing if the enemy can attack because we don\u2019t want to allow the enemy to perform hundreds attacks in a second.<\/p>\n<p>If the enemy can\u2019t attack we are calling Chase Player to make the enemy chase the player again.<\/p>\n<p>But if the enemy can attack we set the Can Attack to false so that the enemy doesn\u2019t perform multiple attacks, then we call Recharge Attack custom event which we created.<\/p>\n<p>This event simply calls the Delay node and passes the Attack Rate which we use as the wait time before we allow the enemy to attack again. So when the wait is over we set the Can Attack to true.<\/p>\n<p>After that we call the Chase Player custom event again to make the enemy chase the player and perform another attack.<\/p>\n<p>And lastly we deal damage to the player:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4d9d137 elementor-widget elementor-widget-image\" data-id=\"4d9d137\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"263 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/220f4723ee21d7e803e9aa9d280a420506a5a1cb283e6c8496906914366a6587.jpeg\" alt=\"263 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-392f192 elementor-widget elementor-widget-text-editor\" data-id=\"392f192\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>For now, we\u2019re using the Print String node to print on the screen when the enemy deals damage to player because we didn\u2019t create that funcionality in the BP_Player blueprint.<\/p>\n<p>The last step is to initialize this behavior when the enemy actor is created in the game:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-25a29a7 elementor-widget elementor-widget-image\" data-id=\"25a29a7\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"264 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/5b35fb3cda480a5c2944600a0fd8d22333aa94a26e9066533ea931657e345a21.jpeg\" alt=\"264 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-87cf7ca elementor-widget elementor-widget-text-editor\" data-id=\"87cf7ca\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You can copy the nodes from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-06699e6 elementor-widget elementor-widget-html\" data-id=\"06699e6\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/cx6l24vi\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-93efaee elementor-widget elementor-widget-text-editor\" data-id=\"93efaee\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To test this out, drag the BP_Parasite inside the map:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4d8616b elementor-widget elementor-widget-image\" data-id=\"4d8616b\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"265 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/30f621e0c7efa2e31845d7c3b8fa60c99fe6f62cef8a639efecbdf849ee7b895.jpeg\" alt=\"265 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9886253 elementor-widget elementor-widget-text-editor\" data-id=\"9886253\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>When we run the game now, this happens:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-db26f45 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"db26f45\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c576a8d elementor-widget elementor-widget-text-editor\" data-id=\"c576a8d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The enemy was just standing still. And the reason why is because we need to do one more thing to make the AI work.<\/p>\n<p>But before we do that, we\u2019ll give you an assignment. Try to figure out what you need to do on your own by searching for the solution on google.<\/p>\n<p>You see, one of the most essential skills every game developer needs to have to get hired in a game studio is being able to find solutions for the problems he\u2019s facing on google e.g. use google to search for the solution.<\/p>\n<p>And yes, this is a skill that is a MUST and all game programmers and software engineers who work in game studios and companies have this skill.<\/p>\n<p>That\u2019s why inside Game Dev Pro we mention this over and over again and show our students how to master this skill.<\/p>\n<p>Now we\u2019re going to proceed to the solution, but again, we encourage you to try and solve it on your own.<\/p>\n<p>The reason why the enemy was not moving is because the AI Move To node doesn\u2019t have any information about the space where the enemy is located.<\/p>\n<p>And to give it that information we need to drag the Nav Mesh Bounds Volume inside the map. To do that we need the Place Actors view which you can access from Window -&gt; Place Actors:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6ea8937 elementor-widget elementor-widget-image\" data-id=\"6ea8937\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"266 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b8b5b3ba19ed8de08c467452f837800ed99b68d544ec39b7c1b0941ae20781c4.jpeg\" alt=\"266 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-dcc8bfd elementor-widget elementor-widget-text-editor\" data-id=\"dcc8bfd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside the Place Actors window search for the nav mesh bounds volume and drag it in the map:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9d977ef elementor-widget elementor-widget-image\" data-id=\"9d977ef\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"267 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/81cd5546f8ba951205bd58714cee9282a17f281f79011417a6b2f506c5a53100.jpeg\" alt=\"267 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5d89496 elementor-widget elementor-widget-text-editor\" data-id=\"5d89496\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Select the Nav Mesh Bounds Volume in the Outliner tab and set the following values for the Transform component:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-25806ba elementor-widget elementor-widget-image\" data-id=\"25806ba\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"268 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3fa2a01603b64af9e7a698fba999097137483bd2639901b24a233961b99f4d2d.jpeg\" alt=\"268 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4074041 elementor-widget elementor-widget-text-editor\" data-id=\"4074041\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This will resize the Nav Mesh Bounds Volume to cover the whole level:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-aaabb59 elementor-widget elementor-widget-image\" data-id=\"aaabb59\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"269 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/55b51e1464bb4f63f6b48cf87b210f7022534723dd6ffa1917636d6144f827b7.jpeg\" alt=\"269 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4a380f1 elementor-widget elementor-widget-text-editor\" data-id=\"4a380f1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We need to do this because the Nav Mesh Bound Volume can only get the information of the environment which is contained within it. And when we resize it to fit the whole level then it will have the information about the whole level.<\/p>\n<p>And we can check this by pressing the \u201cP\u201d button on the keyboard. When we do that everything that\u2019s covered with the green color means that\u2019s a navigationable are:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-262c5c6 elementor-widget elementor-widget-image\" data-id=\"262c5c6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"270 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f6e99eb91f30c88ec78f434519126ebcc58b800ca2c72b28db366d4f81683ee0.jpeg\" alt=\"270 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-602c4e6 elementor-widget elementor-widget-text-editor\" data-id=\"602c4e6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">Now when we test the game we\u2019ll see that the enemy is following the player:<\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-29ed28e elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"29ed28e\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c21fb03 elementor-widget elementor-widget-text-editor\" data-id=\"c21fb03\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now the enemy follows the player and we also saw when it reached the player that it attacked him which was denoted with the Print String node which printed in the top left screen \u201cEnemy attacked player.\u201d<\/p>\n<p>One thing was missing though and that is the enemy animation. The enemy was moving but it was not being animated.<\/p>\n<p>Before we provide the solution for that we\u2019re giving you an assignment to fix it.<\/p>\n<p>But essentially what you have to do is inside the EventGraph for the BP_Parasite_Animation blueprint add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6397d62 elementor-widget elementor-widget-image\" data-id=\"6397d62\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"271 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/44bf4564c76eb606b72630b5fbcdbd4f7c4695a42bb4db43620c2153ff84e682.jpeg\" alt=\"271 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c56eaec elementor-widget elementor-widget-text-editor\" data-id=\"c56eaec\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now when we test the game we\u2019ll see that the enemy is animating:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7865483 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"7865483\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-00e46c7 elementor-widget elementor-widget-heading\" data-id=\"00e46c7\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Dealing Damage To The Enemy<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-71a6be6 elementor-widget elementor-widget-text-editor\" data-id=\"71a6be6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To deal damage to the parasite enemy we first need to create a custom event. So inside the BP_Parasite add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7398f16 elementor-widget elementor-widget-image\" data-id=\"7398f16\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"271 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/44bf4564c76eb606b72630b5fbcdbd4f7c4695a42bb4db43620c2153ff84e682.jpeg\" alt=\"271 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8cd92ad elementor-widget elementor-widget-text-editor\" data-id=\"8cd92ad\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We created a custom node called Deal Damage which takes a float parameter. You can create a parameter for a custom event in the Details tab:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d6b2b9d elementor-widget elementor-widget-image\" data-id=\"d6b2b9d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"272 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/485d920369a99ec5cc8a1661511deb2df8922b602844f60a20ac9ddf22850b4c.jpeg\" alt=\"272 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ad7dd8c elementor-widget elementor-widget-image\" data-id=\"ad7dd8c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"273 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/92d2ddd6023cb6756f79afe4f3e95becc2434a4986bc8809df47fbc58dd6e373.jpeg\" alt=\"273 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3110409 elementor-widget elementor-widget-text-editor\" data-id=\"3110409\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The parameter can be of any type but for our purpose here we need a float.<\/p>\n<p>So we take the Damage parameter and we subtract it from the Health value then we set the new Health value.<\/p>\n<p>After that we take the new Health value and we test if it\u2019s less than or equal to 0 meaning we are testing if we should destroy the enemy because it\u2019s health dropped to 0 or below 0:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a90ab71 elementor-widget elementor-widget-image\" data-id=\"a90ab71\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"274 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/7dcf747cd7886e7b7818f818eb8e0d7a1d4a1b87f082913d8b7c22ba3f5ec526.jpeg\" alt=\"274 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-872cfe7 elementor-widget elementor-widget-text-editor\" data-id=\"872cfe7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">If that is true we\u2019ll execute the following nodes:<\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c770d14 elementor-widget elementor-widget-image\" data-id=\"c770d14\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"275 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b18a6099c7f8f44cb61dc8d1b77f492c238a27858fcc0f227abcc19b1f26da4f.jpeg\" alt=\"275 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-50b9217 elementor-widget elementor-widget-text-editor\" data-id=\"50b9217\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The Set Simulate Physics node will simulate a ragdoll like effect on the mesh and make the enemy fall down. We also set the Enemy Died to true because the enemy has no more health left to be alive in the game.<\/p>\n<p>Next, we are going to increment the enemy kill count inside the BP_Player, but for that we first need to create a function called Increment Kill Count inside the BP_Player:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-cd5432a elementor-widget elementor-widget-image\" data-id=\"cd5432a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"276 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/4ba21daa919f8a06f495f751d15d7721b8529dd59c9fbae5c43002075431c48f.jpeg\" alt=\"276 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ee19d32 elementor-widget elementor-widget-text-editor\" data-id=\"ee19d32\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Inside the Increment Kill Count function we are going to increase the Kill Counter variable value by 1:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-44e8e32 elementor-widget elementor-widget-image\" data-id=\"44e8e32\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"277 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ed1c370930905f1b7a486184ca589f69cdfbcb9666b09ddf9ee12db6d2ac6298.jpeg\" alt=\"277 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3f0ddca elementor-widget elementor-widget-text-editor\" data-id=\"3f0ddca\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now we can go back inside the BP_Parasite and finish the Deal Damage event node by adding the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2464c13 elementor-widget elementor-widget-image\" data-id=\"2464c13\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"278 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/73f1ec2a9d1181776ff50b808956508f10db60547e9251b12e32ffe6052f1121.jpeg\" alt=\"278 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-bdf037d elementor-widget elementor-widget-text-editor\" data-id=\"bdf037d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Basically we\u2019re getting a reference to the BP_Player blueprint, calling his Increment Kill Count function we just created to increase the kill count by 1, then delaying 1 second and destroying the enemy actor.<\/p>\n<p>You can copy the nodes for the Deal Damage event from here:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-45d9bbe elementor-widget elementor-widget-html\" data-id=\"45d9bbe\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n<div class=\"elementor-widget-container\"><iframe src=\"https:\/\/blueprintue.com\/render\/1rp7w-im\/\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-db8e6c2 elementor-widget elementor-widget-text-editor\" data-id=\"db8e6c2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We are still not done because in order to deal damage to the enemy we need to go back in the BP_Player blueprint at the end of the shooting functionality when we spawn emitters at the location where the bullet hits and add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9110a3e elementor-widget elementor-widget-image\" data-id=\"9110a3e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"279 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ec092ddeaf0f880fc34b1110b5a161ebb2ddc557be705e2420fe7724db935ddd.jpeg\" alt=\"279 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-52db219 elementor-widget elementor-widget-text-editor\" data-id=\"52db219\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We are getting a reference to the BP_Parasite and calling its Deal Damage event to deal damage to the enemy, and the object we\u2019re passing as a reference is the Hit Actor we get from the Break Hit Result:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2b9293e elementor-widget elementor-widget-image\" data-id=\"2b9293e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"280 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/8630788e27c4d140f57690cf462c96071bfb9c1086d8033b9072acd6413cdad9.jpeg\" alt=\"280 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d7e4934 elementor-widget elementor-widget-template\" data-id=\"d7e4934\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor418795<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor418795 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor418795 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor418795\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-24c2ebf elementor-widget elementor-widget-text-editor\" data-id=\"24c2ebf\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now we can run the game and see the result:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7059e24 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"7059e24\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9fde8c7 elementor-widget elementor-widget-text-editor\" data-id=\"9fde8c7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Well\u2026<\/p>\n<p>This backfired\u2026<\/p>\n<p>And I can already hear you screaming \u201cTEACHER THIS IS NOT WORKING WHAT SHOULD I DOOOOOO\u201d<\/p>\n<p>Calm down.<\/p>\n<p>We need to do one more thing so that we can deal damage to the enemy. Inside the BP_Parasite, select the mesh component in the Details tab find the Collision settings:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c32b5ed elementor-widget elementor-widget-image\" data-id=\"c32b5ed\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"281 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/c89ed3d38afc2cc778581e5f4b2cabdfcfa47aa546ef1273094ec0428a32122d.jpeg\" alt=\"281 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ded4c51 elementor-widget elementor-widget-text-editor\" data-id=\"ded4c51\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the collision settings for the Collision Presets select the Custom option and set the settings as you see below in the image:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4d29b14 elementor-widget elementor-widget-image\" data-id=\"4d29b14\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"282 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f4a5346347bbbd586fdba0fa4289cb8156dc1746c18f351042d71b7a7735ed80.jpeg\" alt=\"282 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1144890 elementor-widget elementor-widget-text-editor\" data-id=\"1144890\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Also for the Collision Enabled option click on the drop-down list and select Collision Enabled (Query And Physics):<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-25d87c8 elementor-widget elementor-widget-image\" data-id=\"25d87c8\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"283 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/b6e60f0f95bbd2c96fdf39fc78d3213249e64f2265dd9cb2f5e614e505ac6871.jpeg\" alt=\"283 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3f4e0f3 elementor-widget elementor-widget-text-editor\" data-id=\"3f4e0f3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>These settings are going to enable the line trace we\u2019re drawing to collide with the parasite enemy.<\/p>\n<p>So now when we run the game and test it we have this result:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4d2530b elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"4d2530b\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d8062b6 elementor-widget elementor-widget-text-editor\" data-id=\"d8062b6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now when we hit the enemy we deal damage to it and when its health value drops to or below 0 the enemy dies. We also saw the ragdoll effect when the enemy fell down which is created with the Simulate Physics node.<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-11f6912 elementor-widget elementor-widget-heading\" data-id=\"11f6912\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Dealing Damage To The Player<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-88e4205 elementor-widget elementor-widget-text-editor\" data-id=\"88e4205\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To deal damage to the player we need to do the same thing we did for the enemy. Inside the BP_Player create a custom node called Deal Damage and add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c4c7d45 elementor-widget elementor-widget-image\" data-id=\"c4c7d45\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"284 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/19d3a41a5bcc9afb9b4f8adb01c7739560b2a16552ab42897613e8dc860c6bb2.jpeg\" alt=\"284 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-df2fd25 elementor-widget elementor-widget-text-editor\" data-id=\"df2fd25\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This is the same thing we did for the BP_Parasite and the same explanations are valid here as well.<\/p>\n<p>But opposite to the enemy actor, for our player we need to add the following nodes as well:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e46fe23 elementor-widget elementor-widget-image\" data-id=\"e46fe23\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"285 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f28c2860133536db8d943f9ffe32c3373896c220390956453ff88a487ced1404.jpeg\" alt=\"285 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-77079ee elementor-widget elementor-widget-text-editor\" data-id=\"77079ee\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Essentially, when the player dies we need to disable the input because we don\u2019t want to move the player when he dies in the game. Also, in case we are sprinting when the player dies we are calling the Unsprint Event to cancel the sprinting.<\/p>\n<p>Lastly, we are delaying 2 seconds and then reloading the same level. Just make sure that the level name you put in the parameter is the same as the game level:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-410f6d6 elementor-widget elementor-widget-image\" data-id=\"410f6d6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"286 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/56e8c7a87e6891d8ea000aa61536c118d0a37255e4ce6f63521185bd9a61a987.jpeg\" alt=\"286 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-70fb96b elementor-widget elementor-widget-text-editor\" data-id=\"70fb96b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The last step is to go inside the BP_Parasite and at the end of the Chase Player node in the block which we commented with Deal Damage To Player, instead of calling the Print String node, we are going to call the Deal Damage node which we just created:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-25136c8 elementor-widget elementor-widget-image\" data-id=\"25136c8\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"287 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/1020f07d21b27a8d20d24fd1766a7ba9821b9433b3d7c0c6de4a9961bcca8c3d.jpeg\" alt=\"287 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b0fbb2e elementor-widget elementor-widget-text-editor\" data-id=\"b0fbb2e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Now we can run the game and test it out:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2f70353 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"2f70353\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5a7546e elementor-widget elementor-widget-text-editor\" data-id=\"5a7546e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>After a few moments or attacks when the enemy gets close to the player the player character dies and then we restart the level and play the game again.<\/p>\n<p>The reason why it takes time for the player to die is because of the attack delay we set on the enemy. We set the attack delay to a higher number because when you have multiple enemies in the game they will attack the player all at once and deal damage and thus killing the player faster.<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-596623f elementor-widget elementor-widget-heading\" data-id=\"596623f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Creating The UI HUD For Our Game<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e214d56 elementor-widget elementor-widget-text-editor\" data-id=\"e214d56\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We are finished with the mechanics of our game. The last step is to display the game stats e.g. player\u2019s health and kill count to the user who plays the game.<\/p>\n<p>We\u2019re going to start by created the UI hud, so inside the HUD folder create a new blueprint widget:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4480dd7 elementor-widget elementor-widget-image\" data-id=\"4480dd7\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"288 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0489a4efa4c62351c2b36423c83b17611c893afeeecb47855084b10d3513d1d7.jpeg\" alt=\"288 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-51f4915 elementor-widget elementor-widget-text-editor\" data-id=\"51f4915\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the popup window click on the User Widget:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8c18d9b elementor-widget elementor-widget-image\" data-id=\"8c18d9b\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"289 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/8d682a2c475acaa9e0d4ae9bd1db08eb23701b755c6226b99ab9fbf2d8aa17aa.jpeg\" alt=\"289 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ff2fdf9 elementor-widget elementor-widget-text-editor\" data-id=\"ff2fdf9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Name the widget WB_UIHUD and open it in the editor. The first we need to do is from the Palette tab on the left side search for the Canvas and drag it in the editor:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-df03f13 elementor-widget elementor-widget-image\" data-id=\"df03f13\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"290 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f2bee2b4841cec22131a70ec029306f5c967f24c7b2d91a63cf1082feb6dede0.jpeg\" alt=\"290 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3cb2d44 elementor-widget elementor-widget-text-editor\" data-id=\"3cb2d44\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Next, we are going to search for a text widget and drag it in the canvas:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-e17047c elementor-widget elementor-widget-image\" data-id=\"e17047c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"291 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f80c6d99c44e356f3992012133cc8c464ec40c97af6733055529be36b5546c83.jpeg\" alt=\"291 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-7191f82 elementor-widget elementor-widget-text-editor\" data-id=\"7191f82\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Move the anchor of the text widget at the bottom left corner by dragging it from the top left corner:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c63c452 elementor-widget elementor-widget-image\" data-id=\"c63c452\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"292 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/403587359d35bd73307029a7081d42a3a17c823f9a081814ff55d0bba13ccac5.jpeg\" alt=\"292 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6f2a0a6 elementor-widget elementor-widget-text-editor\" data-id=\"6f2a0a6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The anchor represents the starting origin of the UI widget. So when we set the anchor at the bottom left corner and set the position of the widget to be\u00a0<span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">X = 0, Y = 0<\/span><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">\u00a0it will position at the bottom left corner.<\/span><\/p>\n<p>Same thing will happen if we move the anchor at the top right corner for example, and we set it\u2019s position to X = 0, Y = 0, the widget will be positioned at the top right corner.<\/p>\n<p>Next, change the settings for the text in the Details tab on the right side:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5ae788b elementor-widget elementor-widget-image\" data-id=\"5ae788b\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"293 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/29809fbe4219813f078b88ef73914853d347a369d662aca12d7c6cdca0ae9070.jpeg\" alt=\"293 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-4e89b9f elementor-widget elementor-widget-text-editor\" data-id=\"4e89b9f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We changed the font size and we change the initial text that\u2019s displayed. Next, duplicate the text widget with CTRL + C and CTRL + V or Right Click -&gt; Copy and the Right Click -&gt; Paste and move the duplicate texst widget below the original.<\/p>\n<p>All options are going to stay the same except for the initial text which we are going to change to display the ammo:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6001b11 elementor-widget elementor-widget-image\" data-id=\"6001b11\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"294 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/4bcded4ca8cb985a6f379bd8067ef83aee775942210612930ba877390068b267.jpeg\" alt=\"294 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0f66f04 elementor-widget elementor-widget-text-editor\" data-id=\"0f66f04\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We are also going to display the player\u2019s health with the UI widget and for that we are going to use a progress bar which you can search in the Palette tab and drag it at the bottom left corner:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ddfc2cf elementor-widget elementor-widget-image\" data-id=\"ddfc2cf\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"295 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/3c1f345d07cabc0e4a98638efa9b2e497107aa1eb54fd3ceaa9127cd9f21d26d.jpeg\" alt=\"295 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6d4ae67 elementor-widget elementor-widget-text-editor\" data-id=\"6d4ae67\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We\u2019ve also moved the anchor of the progress bar at the bottom left corner, we changed the percent value to 1 which basically means it will fill the progress bar, and we changed the color.<\/p>\n<p>To display this widget in the game we need to go inside the BP_Player blueprint and add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d2274ee elementor-widget elementor-widget-image\" data-id=\"d2274ee\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"296 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/fe402d9f2732100a2ef084dac6ceeed27d1fec83e760ef8e0a4de6b8d650ab4f.jpeg\" alt=\"296 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6a75e6c elementor-widget elementor-widget-text-editor\" data-id=\"6a75e6c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>In the BeginPlay node after we call the Add Mapping Context we call the Create Widget node and specify in the drop-down list the WB_UIHUD widget we created, and lastly we are calling Add To Viewport node which will add the widget to the view port.<\/p>\n<p>When we run the game we\u2019ll see the UI hud:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-96fac40 elementor-widget elementor-widget-image\" data-id=\"96fac40\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"297 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d5f7cdc528f937490222f79cb02b638d9a59eab582893b2451d69ed41f45ff5f.jpeg\" alt=\"297 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-426f513 elementor-widget elementor-widget-template\" data-id=\"426f513\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor428620<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor428620 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor428620 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor428620\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-aa78ced elementor-widget elementor-widget-heading\" data-id=\"aa78ced\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Displaying Game Stats In The UI HUD<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d696b9f elementor-widget elementor-widget-text-editor\" data-id=\"d696b9f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>While the UI is showing in the game it still doesn\u2019t have any functionality. To fix this, we need to go inside the Graph editor of the WB_UIHUD which you can access at the top right corner:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-881f3ff elementor-widget elementor-widget-image\" data-id=\"881f3ff\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"298 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/25138961066d4357589f68bcf8e8fe891074290774a9df38e84ea9b5d04d20cf.jpeg\" alt=\"298 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-69fbbff elementor-widget elementor-widget-text-editor\" data-id=\"69fbbff\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>You\u2019ll notice that we Designer tab which represents the visual part of the widget which is the one we just worked on, and next to him we have the Graph tab.<\/p>\n<p>Click on the Graph tab and from the Event Construct we are going to get a reference to the BP_Player actor:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-fd6eeec elementor-widget elementor-widget-image\" data-id=\"fd6eeec\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"299 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/0eb1910128e5125afdc819af7e94e9d61ac74f2241d9f349935a93b2b69e4473.jpeg\" alt=\"299 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-086c951 elementor-widget elementor-widget-text-editor\" data-id=\"086c951\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To get a reference to the BP_Player we can either create a variable like we did in prior examples above, or we can drag the line from the As BP Player returning value and then select promote to variable:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-9acbea3 elementor-widget elementor-widget-image\" data-id=\"9acbea3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"300 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/6b1fd6e96950f51977bf0ea96ad09059d3e6ca781a728bc6dcaba0ed23b4b765.jpeg\" alt=\"300 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b171c2d elementor-widget elementor-widget-text-editor\" data-id=\"b171c2d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This will automatically create a BP_Player reference variable and assign it:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d8e14cd elementor-widget elementor-widget-image\" data-id=\"d8e14cd\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"301 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/de68723664b8ae7f2e8c622ea51823ff40a0639b9d9014fc294eec66c019bc16.jpeg\" alt=\"301 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3998bda elementor-widget elementor-widget-text-editor\" data-id=\"3998bda\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We\u2019ve renamed the variable to Player just in case if you\u2019re confused because you\u2019ll probably see the name of the variabel As BP Player.<\/p>\n<p>Now that we have a reference to the player actor we can go back in the Designer tab, select the kills counter text and from the Bind drop-down list create a new binding:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d4aee31 elementor-widget elementor-widget-image\" data-id=\"d4aee31\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"302 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/09d4f49c7844fbf8210cbb26a4da8505a81cda2f84c99911a17d3c7e71cce2b4.jpeg\" alt=\"302 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6fd1a43 elementor-widget elementor-widget-text-editor\" data-id=\"6fd1a43\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>This binding is actually a function that is bound to that text widget and we can use that function to manipulate that text widget.<\/p>\n<p>You can find the function inside the Graph editor in the Functions tab and you can also rename it which we already did:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0ef0e6e elementor-widget elementor-widget-image\" data-id=\"0ef0e6e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"303 \u2013 Zombie\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/538010842129fac8489919bcf0d9306908520b42fcf4633dd52c7166e789decd.jpeg\" alt=\"303 - Zombie\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-abb3020 elementor-widget elementor-widget-text-editor\" data-id=\"abb3020\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Next, create a new variable type of string:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-d265697 elementor-widget elementor-widget-image\" data-id=\"d265697\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"304 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/ceb74fd8e4896b718fe948a6369147ac8673c960a366292d2d6ceac3f02f613f.jpeg\" alt=\"304 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5243f65 elementor-widget elementor-widget-text-editor\" data-id=\"5243f65\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Give that variable a default value of \u201cKills Count: \u201c:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-8a96b09 elementor-widget elementor-widget-image\" data-id=\"8a96b09\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"305 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/88faedb64acaa546db3ccf3cc3e98e0a5c9b214f2599c01bef312b6fd79e191c.jpeg\" alt=\"305 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1c05f58 elementor-widget elementor-widget-text-editor\" data-id=\"1c05f58\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Notice how we have space at the end of the string because we want to appent an integer which is the kills count value.<\/p>\n<p>And to do that, we\u2019ll add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-a2d0b20 elementor-widget elementor-widget-image\" data-id=\"a2d0b20\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"306 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/2c186afcc1e6281ac413f5e8b037f45cc39e3f06c842016595cd79ddf918f956.jpeg\" alt=\"306 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-6d6f3dc elementor-widget elementor-widget-text-editor\" data-id=\"6d6f3dc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The Build String node will build a new string from the parameters we pass to it. The Append To parameter is the first string to which the integer will be appended.<\/p>\n<p>We are using the Kills Count Txt variable which we created above and then we are appending the Kill Counter which we got from the Player reference.<\/p>\n<p>And finally we are plugging that value in the Return Value for the Return Node.<\/p>\n<p>So now when we test the game the kills counter will count how many zombies we killed:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-444a378 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"444a378\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-29acd7e elementor-widget elementor-widget-text-editor\" data-id=\"29acd7e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We\u2019ve added an extra zombie just so that we can see the kill count go to 2 when we kill them both.<\/p>\n<p>Now we are going to repeat the process for the ammo text. But before we show you how to do it, you have an assignment to do it on your own.<\/p>\n<p>It\u2019s the same thing we just did for the kills count but we also need to add one more string after we append the ammo count.<\/p>\n<p>We\u2019ll start with creating a binding for the ammo text, we\u2019ll name it Ammo Counter and add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3168463 elementor-widget elementor-widget-image\" data-id=\"3168463\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"307 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/449ca356b9cfd635bd0eb015c966120caaac5b52465b5947e037893cca2fd616.jpeg\" alt=\"307 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ed75695 elementor-widget elementor-widget-text-editor\" data-id=\"ed75695\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We created a local variable of string type and added \u201cAmmo: \u201d value in it.<\/p>\n<p>Next, from the player reference we get the Current Ammo value and we also add the suffix \u201c\/30\u201d at the end so that it will display the ammo like X\/X.<\/p>\n<p>This is how it looks like when we run the game:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-2519311 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"2519311\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5e2edf7 elementor-widget elementor-widget-text-editor\" data-id=\"5e2edf7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Whenever we shoot with the gun the ammo count goes down and when we reload the gun the ammo goes back to its initial value.<\/p>\n<p>The last step with the UI Hud is to display the health of the player. So inside the Designer tab, select the progress bar and create the binding for the percent:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1c381e5 elementor-widget elementor-widget-image\" data-id=\"1c381e5\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"308 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/850657d9b10eded68af1ab3b626bf39ceae34c0fae154a85814ee4cc96810001.jpeg\" alt=\"308 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1d911ed elementor-widget elementor-widget-text-editor\" data-id=\"1d911ed\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Name that binding Set Health and add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3a0fc83 elementor-widget elementor-widget-image\" data-id=\"3a0fc83\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"309 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/d9acc19af20fb2ff3a8e44e8863b2a2560867d626a6cf30c137eacf9061e0a3c.jpeg\" alt=\"309 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-cfe7623 elementor-widget elementor-widget-text-editor\" data-id=\"cfe7623\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>We are getting the health value from the player, then we are diving that value by 100 because the percent value for the Progress Bar widget goes from 0.0 to 1.0.<\/p>\n<p>So if the player\u2019s health is 90 and we divide that by 100 we get 0.9 and that\u2019s the value which will be set in the progress bar.<\/p>\n<p>This is how it looks like when we test the game:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-40f2e57 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"40f2e57\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-49991f1 elementor-widget elementor-widget-heading\" data-id=\"49991f1\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Zombie Spawner<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c45905e elementor-widget elementor-widget-text-editor\" data-id=\"c45905e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>The last step is to creat a spawner who is going to spawn new enemies in the game over a time interval.<\/p>\n<p>Since this is the last thing we\u2019ll do for our game we\u2019re not going to create a separate folder just for the zombie spawner blueprint, but if this was a bigger game definitely group all your assets for better management.<\/p>\n<p>So inside the FPS_ZombieHorde we are going to Right Click -&gt; Blueprint Class and from the next window select the Actor class as the parent class:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-905e69a elementor-widget elementor-widget-image\" data-id=\"905e69a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"310 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/abbff794235d7a449e28b33944c53c764ea20b4017a5fd7f79bba1d84341d9ad.jpeg\" alt=\"310 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-252a46d elementor-widget elementor-widget-text-editor\" data-id=\"252a46d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Name the new blueprint BP_Zombie_Spawner and open it in the editor. Inside the BP_Zombie_Spawn first we\u2019re going to create a new float variable, call it Spawn Rate, make it visible in the blueprint instance by clicking the eye icon and set the initial value to 5:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-5ab4105 elementor-widget elementor-widget-template\" data-id=\"5ab4105\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor431447<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor431447 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor431447 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor431447\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c132900 elementor-widget elementor-widget-image\" data-id=\"c132900\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"311 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/4ff992d6204566f97bd267f8d8af4da030918106eac5e76d49aab60d26aa0fea.jpeg\" alt=\"311 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-f09c4f3 elementor-widget elementor-widget-text-editor\" data-id=\"f09c4f3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>Then add the following nodes:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-232ae66 elementor-widget elementor-widget-image\" data-id=\"232ae66\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"312 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/08ed6fbce6aa00a815bedaf70a451548d2c2e117fb1ffad81e9961cb75fb301f.jpeg\" alt=\"312 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1ccda6f elementor-widget elementor-widget-text-editor\" data-id=\"1ccda6f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>First we are calling the Delay node and we\u2019re passing the Spawn Rate which will delay the node using its value.<\/p>\n<p>And becase we clicked the eye icon for the Spawn Rate, we can edit its value for every blueprint instance we create.<\/p>\n<p>Lastly, we\u2019re calling the Spawn AIFrom Class node which will spawn the AI class we provide in the Pawn Class paramter.\u00a0<span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">And the class we provided is BP_Parasite from the drop down list.<\/span><\/p>\n<p><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">Now, instead of adding the zombies in the game directly, we add the spawners which will spawn the zombies:<\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-3206362 elementor-widget elementor-widget-image\" data-id=\"3206362\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"313 \u2013 Zombie Horde\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/f179c3001b4a484615214675e2855a248029e3c03a09614df9649da320e5194b.jpeg\" alt=\"313 - Zombie Horde\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-eae2531 elementor-widget elementor-widget-text-editor\" data-id=\"eae2531\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>To randomize the spawning, select one of the spawners in the Outliner tab and in the Details tab change the Spawn Rate value to any number you wish:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-adcb74b elementor-widget elementor-widget-image\" data-id=\"adcb74b\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n<div class=\"elementor-widget-container\"><img decoding=\"async\" title=\"314 \u2013 Zombie Spawner\" src=\"https:\/\/glossingdress.com\/lib\/img\/all\/551\/bef6fd80c53060fb2032dc267f75f59fbf74a5a1ec1faf0191cca5ae9a34f6bc\/e8d967c70a68c595069c07f6337c4fb0a77019352d5500310883722c8a7954f2.jpeg\" alt=\"314 - Zombie Spawner\" \/><\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-b1c6313 elementor-widget elementor-widget-text-editor\" data-id=\"b1c6313\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>And when we perform the final test of our game, this is how it looks like:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-84c68dc elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"84c68dc\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c1b1167 elementor-widget elementor-widget-heading\" data-id=\"c1b1167\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Final Assignment<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-27d58db elementor-widget elementor-widget-text-editor\" data-id=\"27d58db\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>While the game is working and we can play it, there are 2 bugs in the game.<\/p>\n<p>The first bug is when the enemy dies and we continue shooting it, it will still count it as a kill count and the kill count score will increase.<\/p>\n<p>And the second bug is when the enemy dies near the player and touches him, he still deals damage to the player.<\/p>\n<p>This is how that looks like in the game:<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-1990b5a elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"1990b5a\" data-element_type=\"widget\" data-settings=\"{\" data-widget_type=\"video.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n<div class=\"elementor-video\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-0fd3ff0 elementor-widget elementor-widget-text-editor\" data-id=\"0fd3ff0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>As you saw in the video, when the first zombie was killed we contined to shoot him and the kill count was increasing.<\/p>\n<p>Also, when the enemies were close to played and they died, they dealth damage.<\/p>\n<p>We leave these two bugs for you to fix, and we encourage you to try and do that because that\u2019s the best way to learn.<\/p>\n<p>And after you fix these two bugs, because the title of this tutorials FPS Zombie Horde \u2013 your last assignment will be to change the camera angle of the player to make this game a first person shooter instead of the third person shooter which it currently is.<\/p>\n<p>We\u2019ll not provide a solution for that here, but for those of you who are interested in the solution, you can send us an email at <b><u>support@awesometuts.com<\/u><\/b> and we\u2019ll provide the solution.<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-cec7de9 elementor-widget elementor-widget-heading\" data-id=\"cec7de9\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\">Where To Go From Here<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-ff7b92c elementor-widget elementor-widget-text-editor\" data-id=\"ff7b92c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n<div class=\"elementor-widget-container\">\n<p>For more Unreal Engine blog tutorials you can explore our blog by clicking here.<\/p>\n<p>You can also check out our flagship program called Game Dev Pro which has already helped thousands of people become pro game developers and get hired in the best game studios in the world.<\/p>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-216681f elementor-widget elementor-widget-template\" data-id=\"216681f\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n<div class=\"elementor-widget-container\">\n<div class=\"elementor-template\">\n<div class=\"elementor elementor-31190\" data-elementor-type=\"section\" data-elementor-id=\"31190\">\n<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3fd1c088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3fd1c088\" data-element_type=\"section\" data-settings=\"{\">\n<div class=\"elementor-container elementor-column-gap-default\">\n<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-770fa961\" data-id=\"770fa961\" data-element_type=\"column\">\n<div class=\"elementor-widget-wrap elementor-element-populated\">\n<div class=\"elementor-element elementor-element-36cae1d9 elementor-widget elementor-widget-ucaddon_ue_random_image\" data-id=\"36cae1d9\" data-element_type=\"widget\" data-widget_type=\"ucaddon_ue_random_image.default\">\n<div class=\"elementor-widget-container\"><!-- start Random Image - Middle --><\/p>\n<style type=\"text\/css\">\/* widget: Random Image - Middle *\/<\/p>\n<p>#uc_ue_random_image_elementor445578<br \/>\n{<br \/>\n  display:flex;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor445578 .ue-image-item<br \/>\n{<br \/>\n  display:block;<br \/>\n  transition:0.3s;<br \/>\n  width:100%;<br \/>\n}<\/p>\n<p>#uc_ue_random_image_elementor445578 .ue-image-link<br \/>\n{<br \/>\n  display:block;<br \/>\n  color: unset;<br \/>\n}<\/p>\n<\/style>\n<div id=\"uc_ue_random_image_elementor445578\" class=\"ue-random-image\" data-debug=\"false\" data-editor=\"no\">\n<div class=\"ue-image\">\n<div class=\"ue-image-box\">\n<p><img class=\"ue-image-item\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- end Random Image - Middle --><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial you\u2019ll create a zombie horde shooter game with Unreal Engine 5 using blueprints. The game is simple but is packed with tons of behind the scenes features that will allow you to understand the \u201cwhy\u201d behind the \u201chow\u201d a game is created in Unreal Engine 5. Here\u2019s a short preview of the<\/p>\n","protected":false},"author":1,"featured_media":848,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-847","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/globalgoodplay.com\/index.php?rest_route=\/wp\/v2\/posts\/847"}],"collection":[{"href":"https:\/\/globalgoodplay.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/globalgoodplay.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/globalgoodplay.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/globalgoodplay.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=847"}],"version-history":[{"count":1,"href":"https:\/\/globalgoodplay.com\/index.php?rest_route=\/wp\/v2\/posts\/847\/revisions"}],"predecessor-version":[{"id":967,"href":"https:\/\/globalgoodplay.com\/index.php?rest_route=\/wp\/v2\/posts\/847\/revisions\/967"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/globalgoodplay.com\/index.php?rest_route=\/wp\/v2\/media\/848"}],"wp:attachment":[{"href":"https:\/\/globalgoodplay.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/globalgoodplay.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/globalgoodplay.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}