From ec302c4c33926ebc77856334684788834ed144b4 Mon Sep 17 00:00:00 2001 From: Stedd Date: Mon, 25 Jul 2022 10:01:19 +0200 Subject: [PATCH] Enemy AI updates Updated NavMesh Enemy will be provoked and chase when target enters detection range Enemy attacks when it is withing attack range to target --- Assets/Enemies/Enemy.prefab | 10 ++-- Assets/Enemies/EnemyAI.cs | 55 +++++++++++++++++++--- Assets/Scenes/Sandbox.unity | 70 ++++++++++++++++------------ Assets/Scenes/Sandbox/NavMesh.asset | Bin 34292 -> 34524 bytes ProjectSettings/NavMeshAreas.asset | 23 ++++++++- 5 files changed, 118 insertions(+), 40 deletions(-) diff --git a/Assets/Enemies/Enemy.prefab b/Assets/Enemies/Enemy.prefab index fb7ff1b..ed5d234 100644 --- a/Assets/Enemies/Enemy.prefab +++ b/Assets/Enemies/Enemy.prefab @@ -61,6 +61,8 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: target: {fileID: 0} + chaseDistance: 15 + stopDistance: 2 --- !u!195 &3924901601269037083 NavMeshAgent: m_ObjectHideFlags: 0 @@ -70,17 +72,17 @@ NavMeshAgent: m_GameObject: {fileID: 1314956764262545219} m_Enabled: 1 m_AgentTypeID: 0 - m_Radius: 0.28 + m_Radius: 0.4 m_Speed: 2 m_Acceleration: 8 avoidancePriority: 50 m_AngularSpeed: 120 - m_StoppingDistance: 0 + m_StoppingDistance: 0.2 m_AutoTraverseOffMeshLink: 1 m_AutoBraking: 1 m_AutoRepath: 1 - m_Height: 1.62 - m_BaseOffset: 1.19 + m_Height: 1.45 + m_BaseOffset: 1 m_WalkableMask: 4294967295 m_ObstacleAvoidanceType: 4 --- !u!1 &8248657945561792745 diff --git a/Assets/Enemies/EnemyAI.cs b/Assets/Enemies/EnemyAI.cs index f1076a6..2c0684b 100644 --- a/Assets/Enemies/EnemyAI.cs +++ b/Assets/Enemies/EnemyAI.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -6,10 +7,11 @@ using UnityEngine.AI; public class EnemyAI : MonoBehaviour { [SerializeField] Transform target; - [SerializeField] float chaseRange = 5f; - - private NavMeshAgent navMeshAgent; + [SerializeField] float detectRange = 15f; + [SerializeField] float attackRange = 5f; + [SerializeField] private bool isProvoked = false; + private NavMeshAgent navMeshAgent; void Start() { navMeshAgent = GetComponent(); @@ -17,10 +19,49 @@ public class EnemyAI : MonoBehaviour void Update() { - if (DistanceToTarget(target.position) < chaseRange) + SetStopDistance(attackRange * 0.9f); + + if (DistanceToTarget(target.position) < detectRange) { - navMeshAgent.SetDestination(target.position); + isProvoked = true; } + + if (isProvoked) + { + EngageTarget(); + } + + } + + private void EngageTarget() + { + if (DistanceToTarget(target.position) <= attackRange) + { + AttackTarget(); + } + else + { + FollowTarget(); + } + } + + private void FollowTarget() + { + navMeshAgent.SetDestination(target.position); + } + + private void AttackTarget() + { + print("Die Human!"); + } + + private void Idle() + { + } + + private void SetStopDistance(float stopDistance) + { + navMeshAgent.stoppingDistance = stopDistance; } private float DistanceToTarget(Vector3 targetPosition) @@ -31,7 +72,9 @@ public class EnemyAI : MonoBehaviour void OnDrawGizmosSelected() { Gizmos.color = Color.red; - Gizmos.DrawWireSphere(transform.position, chaseRange); + Gizmos.DrawWireSphere(transform.position, detectRange); + Gizmos.color = Color.blue; + Gizmos.DrawWireSphere(transform.position, navMeshAgent.stoppingDistance); } } diff --git a/Assets/Scenes/Sandbox.unity b/Assets/Scenes/Sandbox.unity index c5f73f3..9a50486 100644 --- a/Assets/Scenes/Sandbox.unity +++ b/Assets/Scenes/Sandbox.unity @@ -107,10 +107,10 @@ NavMeshSettings: serializedVersion: 2 agentTypeID: 0 agentRadius: 0.4 - agentHeight: 1.6 - agentSlope: 45 - agentClimb: 0.32 - ledgeDropHeight: 2.32 + agentHeight: 1.45 + agentSlope: 60 + agentClimb: 1 + ledgeDropHeight: 10 maxJumpAcrossDistance: 3 minRegionArea: 0.5 manualCellSize: 0 @@ -185,7 +185,7 @@ PrefabInstance: - target: {fileID: 2300000, guid: d85d3a32fb6157d488e31edf82b7b1c4, type: 3} propertyPath: m_Materials.Array.data[0] value: - objectReference: {fileID: 2100000, guid: 82096aab38f01cb40a1cbf8629a810ba, type: 2} + objectReference: {fileID: 2100000, guid: 76ff537c8e1a84345868e6aeee938ab3, type: 2} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: d85d3a32fb6157d488e31edf82b7b1c4, type: 3} --- !u!1001 &101430667 @@ -213,11 +213,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 400000, guid: 5d2e4237b4429b34fae4c9eb3cd9efd5, type: 3} propertyPath: m_LocalPosition.y - value: 0.07410587 + value: -0.06 objectReference: {fileID: 0} - target: {fileID: 400000, guid: 5d2e4237b4429b34fae4c9eb3cd9efd5, type: 3} propertyPath: m_LocalPosition.z - value: 30.62 + value: 30.09 objectReference: {fileID: 0} - target: {fileID: 400000, guid: 5d2e4237b4429b34fae4c9eb3cd9efd5, type: 3} propertyPath: m_LocalRotation.w @@ -250,7 +250,7 @@ PrefabInstance: - target: {fileID: 2300000, guid: 5d2e4237b4429b34fae4c9eb3cd9efd5, type: 3} propertyPath: m_Materials.Array.data[0] value: - objectReference: {fileID: 2100000, guid: 82096aab38f01cb40a1cbf8629a810ba, type: 2} + objectReference: {fileID: 2100000, guid: 2236c125e13c3dd41a4428d631bf633c, type: 2} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 5d2e4237b4429b34fae4c9eb3cd9efd5, type: 3} --- !u!4 &101430668 stripped @@ -1448,7 +1448,7 @@ PrefabInstance: - target: {fileID: 2300000, guid: ab33e6080ae416b4d899f39fa8951b98, type: 3} propertyPath: m_Materials.Array.data[0] value: - objectReference: {fileID: 2100000, guid: 82096aab38f01cb40a1cbf8629a810ba, type: 2} + objectReference: {fileID: 2100000, guid: 1032d41f900276c40a9dd24f55b7d420, type: 2} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: ab33e6080ae416b4d899f39fa8951b98, type: 3} --- !u!4 &1556481699 stripped @@ -1817,11 +1817,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1834225747245264377, guid: 3a896632310e02b468121bf09411f87e, type: 3} propertyPath: m_LocalPosition.x - value: 4.5658655 + value: 3.344 objectReference: {fileID: 0} - target: {fileID: 1834225747245264377, guid: 3a896632310e02b468121bf09411f87e, type: 3} propertyPath: m_LocalPosition.y - value: 1.96 + value: 1 objectReference: {fileID: 0} - target: {fileID: 1834225747245264377, guid: 3a896632310e02b468121bf09411f87e, type: 3} propertyPath: m_LocalPosition.z @@ -1861,7 +1861,11 @@ PrefabInstance: objectReference: {fileID: 727849754} - target: {fileID: 2032617874441210469, guid: 3a896632310e02b468121bf09411f87e, type: 3} propertyPath: chaseRange - value: 5 + value: 150 + objectReference: {fileID: 0} + - target: {fileID: 8248657945561792745, guid: 3a896632310e02b468121bf09411f87e, type: 3} + propertyPath: m_StaticEditorFlags + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3a896632310e02b468121bf09411f87e, type: 3} @@ -1878,19 +1882,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 9005220659476430818, guid: 2d3a85ecde41a8246a79669975912b74, type: 3} propertyPath: m_LocalPosition.x - value: 17.75046 + value: 16.36046 objectReference: {fileID: 0} - target: {fileID: 9005220659476430818, guid: 2d3a85ecde41a8246a79669975912b74, type: 3} propertyPath: m_LocalPosition.y - value: -11.351592 + value: -6.761592 objectReference: {fileID: 0} - target: {fileID: 9005220659476430818, guid: 2d3a85ecde41a8246a79669975912b74, type: 3} propertyPath: m_LocalPosition.z - value: -6.015546 + value: 22.514454 objectReference: {fileID: 0} - target: {fileID: 9005220659476430818, guid: 2d3a85ecde41a8246a79669975912b74, type: 3} propertyPath: m_LocalRotation.w - value: 1 + value: -0.015707303 objectReference: {fileID: 0} - target: {fileID: 9005220659476430818, guid: 2d3a85ecde41a8246a79669975912b74, type: 3} propertyPath: m_LocalRotation.x @@ -1898,11 +1902,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 9005220659476430818, guid: 2d3a85ecde41a8246a79669975912b74, type: 3} propertyPath: m_LocalRotation.y - value: -0 + value: -0.9998767 objectReference: {fileID: 0} - target: {fileID: 9005220659476430818, guid: 2d3a85ecde41a8246a79669975912b74, type: 3} propertyPath: m_LocalRotation.z - value: -0 + value: 0 objectReference: {fileID: 0} - target: {fileID: 9005220659476430818, guid: 2d3a85ecde41a8246a79669975912b74, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -1947,15 +1951,15 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8762286023885395322, guid: 9c489a8547f4d9e4387da15a4ff82c81, type: 3} propertyPath: m_LocalPosition.x - value: 17.75046 + value: 16.36046 objectReference: {fileID: 0} - target: {fileID: 8762286023885395322, guid: 9c489a8547f4d9e4387da15a4ff82c81, type: 3} propertyPath: m_LocalPosition.y - value: -11.351592 + value: -6.761592 objectReference: {fileID: 0} - target: {fileID: 8762286023885395322, guid: 9c489a8547f4d9e4387da15a4ff82c81, type: 3} propertyPath: m_LocalPosition.z - value: -6.015546 + value: 22.514454 objectReference: {fileID: 0} - target: {fileID: 8762286023885395322, guid: 9c489a8547f4d9e4387da15a4ff82c81, type: 3} propertyPath: m_LocalRotation.w @@ -2002,14 +2006,22 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 3273242134651530650, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 3360281265970703093, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_IsActive - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5393215578589016655, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: 6b911390c5825014e8377183a7837d3f, type: 2} + - target: {fileID: 6326861089322885425, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 8616685848737228372, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_Name value: Player @@ -2020,19 +2032,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8997996947095583982, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_LocalPosition.x - value: 0 + value: -1.39 objectReference: {fileID: 0} - target: {fileID: 8997996947095583982, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_LocalPosition.y - value: 0 + value: 4.59 objectReference: {fileID: 0} - target: {fileID: 8997996947095583982, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_LocalPosition.z - value: 0 + value: 28.53 objectReference: {fileID: 0} - target: {fileID: 8997996947095583982, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_LocalRotation.w - value: 1 + value: -0.015707303 objectReference: {fileID: 0} - target: {fileID: 8997996947095583982, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_LocalRotation.x @@ -2040,11 +2052,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8997996947095583982, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_LocalRotation.y - value: -0 + value: -0.9998767 objectReference: {fileID: 0} - target: {fileID: 8997996947095583982, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_LocalRotation.z - value: -0 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8997996947095583982, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -2052,7 +2064,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8997996947095583982, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_LocalEulerAnglesHint.y - value: 0 + value: -181.8 objectReference: {fileID: 0} - target: {fileID: 8997996947095583982, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_LocalEulerAnglesHint.z diff --git a/Assets/Scenes/Sandbox/NavMesh.asset b/Assets/Scenes/Sandbox/NavMesh.asset index 3a4c0493114548411a63d03b0dd7e56b113960d6..677a389ac694c5813ea111bd064deb93fe86c112 100644 GIT binary patch literal 34524 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