{"id":37959,"date":"2024-11-01T10:01:50","date_gmt":"2024-11-01T10:01:50","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=37959"},"modified":"2024-11-01T11:32:59","modified_gmt":"2024-11-01T11:32:59","slug":"unity-2d-game-development-implementing-enemy-ai-simple-ai-for-enemy-characters-implementing-tracking-and-attacking-behavior","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/37959\/","title":{"rendered":"Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior."},"content":{"rendered":"<p>In game development, enemy AI (Artificial Intelligence) is an important element that enhances the challenge and immersion of the game. In this course, we will explain in detail how to implement simple AI for enemy characters in Unity 2D games, as well as how to set up tracking and attacking behaviors. This course is useful for beginners to intermediate developers and aims to aid understanding through practical exercises.<\/p>\n<h2>1. Setting Up the Project<\/h2>\n<p>First, create a new 2D project in Unity. Set the project name to &#8220;EnemyAIExample&#8221; and complete the setup. Select the necessary 2D template by default.<\/p>\n<h3>1.1 Initial Setup<\/h3>\n<p>Once the project is created, use 2D sprites to create the map, player character, and enemy character. Import the appropriate sprites to store them in the <strong>Assets<\/strong> folder.<\/p>\n<h3>1.2 Placing Player and Enemy Characters<\/h3>\n<p>Create a simple map in the scene and place the player and enemy character sprites. At this point, set the player&#8217;s name to &#8220;Player&#8221; and the enemy character&#8217;s name to &#8220;Enemy&#8221;.<\/p>\n<h2>2. Understanding Basic Enemy AI<\/h2>\n<p>Enemy AI can be broadly divided into two behaviors: Chasing and Attacking. Chasing includes the enemy detecting and following the player, while Attacking includes the enemy attacking the player who comes close.<\/p>\n<h3>2.1 Managing AI States<\/h3>\n<p>It is important to define states to manage AI behavior. The following states are defined:<\/p>\n<ul>\n<li>Idle: Waiting state<\/li>\n<li>Chase: State of tracking the player<\/li>\n<li>Attack: State of attacking the player<\/li>\n<\/ul>\n<h2>3. Writing Enemy Character Script<\/h2>\n<p>We will create a C# script to implement the AI logic for the enemy character. Create a script named <strong>EnemyAI.cs<\/strong> and write the following code.<\/p>\n<pre><code class=\"language-csharp\">using UnityEngine;\n\npublic class EnemyAI : MonoBehaviour {\n    public float moveSpeed = 2f; \/\/ Enemy movement speed\n    public float chaseRange = 5f; \/\/ Tracking range\n    public float attackRange = 1f; \/\/ Attack range\n    private Transform player; \/\/ Player's Transform\n    private Rigidbody2D rb; \/\/ Enemy character's Rigidbody2D\n    private enum State { Idle, Chase, Attack } \/\/ States of the enemy AI\n    private State currentState = State.Idle; \/\/ Initial state\n    \n    void Start() {\n        player = GameObject.FindWithTag(\"Player\").transform; \/\/ Find the player\n        rb = GetComponent&lt;Rigidbody2D&gt;(); \/\/ Get the Rigidbody2D component\n    }\n\n    void Update() {\n        \/\/ Behavior based on current state\n        switch (currentState) {\n            case State.Idle:\n                IdleBehavior();\n                break;\n            case State.Chase:\n                ChaseBehavior();\n                break;\n            case State.Attack:\n                AttackBehavior();\n                break;\n        }\n    }\n\n    private void IdleBehavior() {\n        \/\/ Calculate distance to the player\n        float distance = Vector2.Distance(transform.position, player.position);\n\n        if (distance &lt; chaseRange) {\n            currentState = State.Chase; \/\/ Switch to chasing state\n        }\n    }\n\n    private void ChaseBehavior() {\n        float distance = Vector2.Distance(transform.position, player.position);\n\n        \/\/ Move towards the player\n        if (distance &gt; attackRange) {\n            Vector2 direction = (player.position - transform.position).normalized;\n            rb.MovePosition(rb.position + direction * moveSpeed * Time.deltaTime);\n        } else {\n            currentState = State.Attack; \/\/ Switch to attacking state\n        }\n\n        if (distance &gt; chaseRange) {\n            currentState = State.Idle; \/\/ Switch to idle state\n        }\n    }\n\n    private void AttackBehavior() {\n        \/\/ Implement attack logic\n        \/\/ You can add code here to deal damage to the player\n        Debug.Log(\"Attacking the player!\");\n        currentState = State.Idle; \/\/ Return to idle state by default\n    }\n}\n<\/code><\/pre>\n<h2>4. Explanation of Enemy Character&#8217;s AI Logic<\/h2>\n<p>We will explain the main functionalities in the code one by one.<\/p>\n<h3>4.1 State Management<\/h3>\n<p>States are managed using <code>enum State<\/code>, and the current state is defined by the <code>currentState<\/code> variable. The current state behavior is determined in Unity&#8217;s <code>Update<\/code> method.<\/p>\n<h3>4.2 Tracking the Player<\/h3>\n<p>State transitions are made based on distance calculations to the player. In <code>IdleBehavior()<\/code>, the distance to the player is measured, which decides the transition to <code>ChaseBehavior()<\/code>.<\/p>\n<h3>4.3 Implementing Attacks<\/h3>\n<p>When the enemy approaches the player, it transitions to the attacking state and executes <code>AttackBehavior()<\/code>. In this state, logic to deal damage to the player can be added. Typically, attack animations or effects added recently are executed.<\/p>\n<h2>5. Setting Enemy Character Position<\/h2>\n<p>After the enemy character is placed in the scene, set the <code>Gravity Scale<\/code> value of the enemy&#8217;s <code>Rigidbody2D<\/code> component to 0 so that it is not affected by gravity. The enemy can move, and layers can be adjusted to prevent it from colliding with the player.<\/p>\n<h2>6. Code Optimization and Expansion<\/h2>\n<p>If you want to add more functionalities to the basic code above, there are various ways to do so, but you can develop the basic AI patterns and behavior logic further. For example, you could set an attack cooldown to avoid continuous attacking or apply animations for each state.<\/p>\n<h3>6.1 Setting Attack Cooldown<\/h3>\n<pre><code class=\"language-csharp\">private float attackCooldown = 1f; \/\/ Attack cooldown timer\nprivate float lastAttackTime = 0f;\n\nprivate void AttackBehavior() {\n    float distance = Vector2.Distance(transform.position, player.position);\n    if (distance &lt; attackRange &amp;&amp; Time.time - lastAttackTime &gt; attackCooldown) {\n        Debug.Log(\"Attacking the player!\");\n        \/\/ You can add code here to deal damage to the player\n        lastAttackTime = Time.time; \/\/ Update the last attack time\n    } else {\n        currentState = State.Idle; \/\/ Return to idle state by default\n    }\n}\n<\/code><\/pre>\n<h3>6.2 Adding Animations<\/h3>\n<p>Using Unity&#8217;s animation system, you can play appropriate animations when the enemy is chasing and attacking. Add an animator component to the enemy character and create and set animations for each state. You can add code that calls the appropriate animation trigger based on state transitions.<\/p>\n<h2>7. Conclusion<\/h2>\n<p>In this tutorial, we learned how to implement simple enemy AI using Unity. We created basic actions for the enemy character to track and attack the player. Based on this foundation, you can design a variety of AI behaviors and apply them to your game. Since AI can add more challenges and excitement, unleash your creativity!<\/p>\n<h2>8. Additional Resources<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.unity3d.com\/Manual\/AnimationSection.html\">Unity Animation Documentation<\/a><\/li>\n<li><a href=\"https:\/\/www.c-sharpcorner.com\/article\/introduction-to-enumeration-in-c-sharp\/\">Understanding Enumerations in C#<\/a><\/li>\n<li><a href=\"https:\/\/docs.unity3d.com\/Documentation\/Manual\/Physics2D.html\">Unity 2D Physics Reference<\/a><\/li>\n<\/ul>\n<p>Thank you! I hope this course helps you, and I wish you great success in your game development journey.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In game development, enemy AI (Artificial Intelligence) is an important element that enhances the challenge and immersion of the game. In this course, we will explain in detail how to implement simple AI for enemy characters in Unity 2D games, as well as how to set up tracking and attacking behaviors. This course is useful &hellip; <a href=\"https:\/\/atmokpo.com\/w\/37959\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior.&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[135],"tags":[],"class_list":["post-37959","post","type-post","status-publish","format-standard","hentry","category-unity-basic"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior. - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/37959\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior. - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In game development, enemy AI (Artificial Intelligence) is an important element that enhances the challenge and immersion of the game. In this course, we will explain in detail how to implement simple AI for enemy characters in Unity 2D games, as well as how to set up tracking and attacking behaviors. This course is useful &hellip; \ub354 \ubcf4\uae30 &quot;Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior.&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/37959\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T10:01:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:32:59+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/37959\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37959\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior.\",\"datePublished\":\"2024-11-01T10:01:50+00:00\",\"dateModified\":\"2024-11-01T11:32:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37959\/\"},\"wordCount\":631,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Unity Basic\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/37959\/\",\"url\":\"https:\/\/atmokpo.com\/w\/37959\/\",\"name\":\"Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior. - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T10:01:50+00:00\",\"dateModified\":\"2024-11-01T11:32:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37959\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/37959\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/37959\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior. - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/37959\/","og_locale":"ko_KR","og_type":"article","og_title":"Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior. - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In game development, enemy AI (Artificial Intelligence) is an important element that enhances the challenge and immersion of the game. In this course, we will explain in detail how to implement simple AI for enemy characters in Unity 2D games, as well as how to set up tracking and attacking behaviors. This course is useful &hellip; \ub354 \ubcf4\uae30 \"Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior.\"","og_url":"https:\/\/atmokpo.com\/w\/37959\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T10:01:50+00:00","article_modified_time":"2024-11-01T11:32:59+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/37959\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/37959\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior.","datePublished":"2024-11-01T10:01:50+00:00","dateModified":"2024-11-01T11:32:59+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/37959\/"},"wordCount":631,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Unity Basic"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/37959\/","url":"https:\/\/atmokpo.com\/w\/37959\/","name":"Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior. - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T10:01:50+00:00","dateModified":"2024-11-01T11:32:59+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/37959\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/37959\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/37959\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Unity 2D Game Development, Implementing Enemy AI Simple AI for Enemy Characters, Implementing Tracking and Attacking Behavior."}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37959","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=37959"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37959\/revisions"}],"predecessor-version":[{"id":37960,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37959\/revisions\/37960"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=37959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=37959"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=37959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}