{"id":5787,"date":"2024-03-09T23:19:24","date_gmt":"2024-03-09T21:19:24","guid":{"rendered":"https:\/\/unitycoder.com\/blog\/?p=5787"},"modified":"2024-03-10T19:41:20","modified_gmt":"2024-03-10T17:41:20","slug":"using-3d-gameobjects-with-unity-tilemap-navmesh-surface","status":"publish","type":"post","link":"https:\/\/unitycoder.com\/blog\/2024\/03\/09\/using-3d-gameobjects-with-unity-tilemap-navmesh-surface\/","title":{"rendered":"Using 3D gameobject prefabs with Unity Tilemap + NavMesh Surface"},"content":{"rendered":"\n<p><strong>Required Packages<\/strong><br><br>&#8211; Tested this on Unity 2023.2.3f1 (but works in other versions too)<br>&#8211; AI Navigation : <a href=\"https:\/\/docs.unity3d.com\/Packages\/com.unity.ai.navigation@2.0\/manual\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.unity3d.com\/Packages\/com.unity.ai.navigation@2.0\/manual\/index.html<\/a><br>&#8211; 2D Tilemap Editor : <a href=\"https:\/\/docs.unity3d.com\/Packages\/com.unity.2d.tilemap@1.0\/manual\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.unity3d.com\/Packages\/com.unity.2d.tilemap@1.0\/manual\/index.html<\/a><br>&#8211; 2D Tilemap Extras : <a href=\"https:\/\/docs.unity3d.com\/Packages\/com.unity.2d.tilemap.extras@4.0\/manual\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.unity3d.com\/Packages\/com.unity.2d.tilemap.extras@4.0\/manual\/index.html<\/a><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Setup Tilemap with 3D Prefabs<\/strong><br><br>&#8211; Add 2D Tilemap to Scene<br>&#8211; Set Grid Cell layout to XZY (so that its flat on ground)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"340\" height=\"187\" data-attachment-id=\"5792\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2024\/03\/09\/using-3d-gameobjects-with-unity-tilemap-navmesh-surface\/image-40\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image.png?fit=340%2C187&amp;ssl=1\" data-orig-size=\"340,187\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image.png?fit=340%2C187&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image.png?resize=340%2C187&#038;ssl=1\" alt=\"\" class=\"wp-image-5792\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image.png?w=340&amp;ssl=1 340w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image.png?resize=300%2C165&amp;ssl=1 300w\" sizes=\"auto, (max-width: 340px) 100vw, 340px\" \/><\/a><\/figure>\n\n\n\n<p><br>&#8211; Create 3D Box in scene view, name it TileGrass, give it green color material, Make prefab from it (drag to Project window, some folder)<br>&#8211; Create 3D Box in scene view, name it TilePath, give it brown color material, Make prefab from it (drag to Project window, some folder)<br>&#8211; Project window: Create 2D\/Tile palette\/Rectangular<br>&#8211; Drag &amp; Drop TileGrass and TilePath prefabs from Project window into Tile palette grid<br>&#8211; Select TileGrass  in Tile Palette<br>&#8211; At Tile Palette window bottom left, select &#8220;GameObject Brush&#8221; from the dropdown (and click Toggle Brush Inspector button (top right bottom in Tile Palette window) *If they are not visible, resize tilepalette<br>&#8211; Assign Element 0: TileGrass prefab from Project window (do the same for TilePath)<br>&#8211; Now with TileGrass selected in Tile Palette window, you can paint into Scene Tilemap (select it first)<br>&#8211; Then toggle Paint mode in Tile Palette window top toolbar (the pencil brush button)<br>&#8211; You can erase painted tiles with left shift+left mouse button (or press I while mouse over some painted tile to Pick that tile as brush)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"604\" height=\"659\" data-attachment-id=\"5793\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2024\/03\/09\/using-3d-gameobjects-with-unity-tilemap-navmesh-surface\/image-1-17\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-1.png?fit=604%2C659&amp;ssl=1\" data-orig-size=\"604,659\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-1.png?fit=604%2C659&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-1.png?resize=604%2C659&#038;ssl=1\" alt=\"\" class=\"wp-image-5793\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-1.png?w=604&amp;ssl=1 604w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-1.png?resize=275%2C300&amp;ssl=1 275w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Adding NavMesh Pathfinding<\/strong><\/p>\n\n\n\n<p>&#8211; Select TileGrass prefab from Project window, add NavMesh Obstacle component to it<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-2.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"252\" data-attachment-id=\"5794\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2024\/03\/09\/using-3d-gameobjects-with-unity-tilemap-navmesh-surface\/image-2-11\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-2.png?fit=624%2C252&amp;ssl=1\" data-orig-size=\"624,252\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-2.png?fit=624%2C252&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-2.png?resize=624%2C252&#038;ssl=1\" alt=\"\" class=\"wp-image-5794\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-2.png?w=624&amp;ssl=1 624w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-2.png?resize=300%2C121&amp;ssl=1 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/a><\/figure>\n\n\n\n<p>&#8211; Create new empty Gameobject in Scene, add NavMeshSurface component to it<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-3.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"616\" data-attachment-id=\"5795\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2024\/03\/09\/using-3d-gameobjects-with-unity-tilemap-navmesh-surface\/image-3-9\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-3.png?fit=1680%2C1010&amp;ssl=1\" data-orig-size=\"1680,1010\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-3.png?fit=1024%2C616&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-3.png?resize=1024%2C616&#038;ssl=1\" alt=\"\" class=\"wp-image-5795\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-3.png?resize=1024%2C616&amp;ssl=1 1024w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-3.png?resize=300%2C180&amp;ssl=1 300w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-3.png?resize=768%2C462&amp;ssl=1 768w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-3.png?resize=1536%2C923&amp;ssl=1 1536w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-3.png?w=1680&amp;ssl=1 1680w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n\n<p>&#8211; Test Baking, if road does not get over-layed with navmesh then open Window\/AI\/Navigation<br>&#8211; Make Agent radius 0.2 (so that it fits the road)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-4.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"403\" height=\"600\" data-attachment-id=\"5796\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2024\/03\/09\/using-3d-gameobjects-with-unity-tilemap-navmesh-surface\/image-4-8\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-4.png?fit=403%2C600&amp;ssl=1\" data-orig-size=\"403,600\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-4\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-4.png?fit=403%2C600&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-4.png?resize=403%2C600&#038;ssl=1\" alt=\"\" class=\"wp-image-5796\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-4.png?w=403&amp;ssl=1 403w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-4.png?resize=202%2C300&amp;ssl=1 202w\" sizes=\"auto, (max-width: 403px) 100vw, 403px\" \/><\/a><\/figure>\n\n\n\n<p>&#8211; Press Bake again in NavMeshSurface gameobject, blue area should appear over Path<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-5.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"351\" data-attachment-id=\"5797\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2024\/03\/09\/using-3d-gameobjects-with-unity-tilemap-navmesh-surface\/image-5-7\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-5.png?fit=640%2C351&amp;ssl=1\" data-orig-size=\"640,351\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-5.png?fit=640%2C351&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-5.png?resize=640%2C351&#038;ssl=1\" alt=\"\" class=\"wp-image-5797\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-5.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-5.png?resize=300%2C165&amp;ssl=1 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Setup AI Agent<\/strong><\/p>\n\n\n\n<p>&#8211; Create new capsule gameobject in Scene (name it &#8220;Agent&#8221;)<br>&#8211; Place it at your tilemap path start position, can make it 0.5x smaller to fit better<br>&#8211; Add NavMeshAgent component to this gameobject<br>&#8211; Add this SampleAgent script to it <a href=\"https:\/\/gist.github.com\/unitycoder\/8e6e27faca3d40abf50c0842a51af558\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/gist.github.com\/unitycoder\/8e6e27faca3d40abf50c0842a51af558<\/a><br>&#8211; Create new empty gameobject in scene (name it &#8220;GoalGo&#8221;)<br>&#8211; Move it at the end of your Path<br>&#8211; Assign &#8220;GoalGo&#8221; gameobject into SampleAgent script in the gameobject<br>&#8211; Press Play<br>&#8211; Agent should move towards goal position, following the available path<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-7.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"912\" height=\"554\" data-attachment-id=\"5800\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2024\/03\/09\/using-3d-gameobjects-with-unity-tilemap-navmesh-surface\/image-7-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-7.png?fit=912%2C554&amp;ssl=1\" data-orig-size=\"912,554\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-7\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-7.png?fit=912%2C554&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-7.png?resize=912%2C554&#038;ssl=1\" alt=\"\" class=\"wp-image-5800\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-7.png?w=912&amp;ssl=1 912w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-7.png?resize=300%2C182&amp;ssl=1 300w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/image-7.png?resize=768%2C467&amp;ssl=1 768w\" sizes=\"auto, (max-width: 912px) 100vw, 912px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/ai-agent.gif?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"519\" height=\"270\" data-attachment-id=\"5799\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2024\/03\/09\/using-3d-gameobjects-with-unity-tilemap-navmesh-surface\/ai-agent\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/ai-agent.gif?fit=519%2C270&amp;ssl=1\" data-orig-size=\"519,270\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ai-agent\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/ai-agent.gif?fit=519%2C270&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/ai-agent.gif?resize=519%2C270&#038;ssl=1\" alt=\"\" class=\"wp-image-5799\"\/><\/a><\/figure>\n\n\n\n<p><strong>References:<\/strong><br>&#8211; NavMeshSurface: <a href=\"https:\/\/docs.unity3d.com\/Packages\/com.unity.ai.navigation@2.0\/manual\/NavMeshSurface.html\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.unity3d.com\/Packages\/com.unity.ai.navigation@2.0\/manual\/NavMeshSurface.html<\/a><br>&#8211; Better 2D Navmesh (works with 2D objects instead of 3D objects) <a href=\"https:\/\/github.com\/h8man\/NavMeshPlus\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/h8man\/NavMeshPlus<\/a><\/p>\n\n\n\n<p><strong>Video:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<span class=\"embed-youtube\" style=\"text-align:center; display: block;\"><iframe loading=\"lazy\" class=\"youtube-player\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/u_hl3U-0mfg?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\"><\/iframe><\/span>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Required Packages &#8211; Tested this on Unity 2023.2.3f1 (but works in other versions too)&#8211; AI Navigation : https:\/\/docs.unity3d.com\/Packages\/com.unity.ai.navigation@2.0\/manual\/index.html&#8211; 2D Tilemap Editor : https:\/\/docs.unity3d.com\/Packages\/com.unity.2d.tilemap@1.0\/manual\/index.html&#8211; 2D Tilemap Extras : https:\/\/docs.unity3d.com\/Packages\/com.unity.2d.tilemap.extras@4.0\/manual\/index.html Setup Tilemap with 3D Prefabs &#8211; Add 2D Tilemap to Scene&#8211; Set Grid Cell layout to XZY [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5799,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":false,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1264,1,3],"tags":[62,89,1282,688,687,1283,1193,878],"class_list":["post-5787","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-uncategorized","category-unity3d","tag-3d","tag-ai","tag-brush","tag-navigation","tag-navmesh","tag-navmeshsurface","tag-prefab","tag-tilemap"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2024\/03\/ai-agent.gif?fit=519%2C270&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p1KTaT-1vl","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/5787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/comments?post=5787"}],"version-history":[{"count":9,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/5787\/revisions"}],"predecessor-version":[{"id":5806,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/5787\/revisions\/5806"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media\/5799"}],"wp:attachment":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media?parent=5787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/categories?post=5787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/tags?post=5787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}