From 8998708ee7797032df4a318f331ef8d74136ce4a Mon Sep 17 00:00:00 2001 From: Chiquita Ahsanunnisa <16521248@mahasiswa.itb.ac.id> Date: Sat, 11 May 2024 04:54:46 +0700 Subject: [PATCH] fix: stuck position --- .../Pets/AttackingPet/AttackingPetStateController.cs | 8 ++++++++ .../Library/BaseClasses/EntityObject/PlayerEntity.cs | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Assets/_Scripts/Core/Entities/Pets/AttackingPet/AttackingPetStateController.cs b/Assets/_Scripts/Core/Entities/Pets/AttackingPet/AttackingPetStateController.cs index ca13447e..138a6e7c 100644 --- a/Assets/_Scripts/Core/Entities/Pets/AttackingPet/AttackingPetStateController.cs +++ b/Assets/_Scripts/Core/Entities/Pets/AttackingPet/AttackingPetStateController.cs @@ -10,6 +10,7 @@ public class AttackingPetStateController : PetStateController<AttackingPet> // Attributes public float followDistance = 6f; public float attackDistance = 3f; + public float maxDistFromOwner = 7f; [HideInInspector] public List<EnemyEntity> attackEnemies = new(); [HideInInspector] public List<EnemyEntity> followEnemies = new(); [HideInInspector] public EnemyEntity nearest; @@ -25,6 +26,13 @@ public class AttackingPetStateController : PetStateController<AttackingPet> // Functions protected override int DetectState() { + // Prevent from stucking in the same state + if (Vector3.Distance(pet.transform.position, pet.Owner.CompanionController.transform.position) > maxDistFromOwner) + { + state = AttackingPetState.AI_IDLE_STATE; + return AttackingPetState.AI_IDLE_STATE; + } + Collider[] attackCollider = Physics.OverlapSphere(pet.transform.position, attackDistance, enemyLayer); Collider[] followCollider = Physics.OverlapSphere(pet.transform.position, followDistance, enemyLayer); diff --git a/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs b/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs index c95dc498..5e8afa98 100644 --- a/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs +++ b/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs @@ -157,7 +157,10 @@ public class PlayerEntity : CombatantEntity, IAccompaniable for (int i = 0; i < companionList.Count; i++) { - Destroy(companionList[i].gameObject); + Companion comp = companionList[i]; + companionList.RemoveAt(i); + companionActive.RemoveAt(i); + Destroy(comp.gameObject); } } } -- GitLab