diff --git a/Assets/Scripts/Pet/PetAttack.cs b/Assets/Scripts/Pet/PetAttack.cs
index 9c1c2a8cb72c13f21e73846a4a34b44b33c2ed77..04cc3edc0646835b990a26cdc51d9752057b4406 100644
--- a/Assets/Scripts/Pet/PetAttack.cs
+++ b/Assets/Scripts/Pet/PetAttack.cs
@@ -6,31 +6,44 @@ public class PetAttack : MonoBehaviour
 {
     public int damage = 10;
     public int timeBetweenAttack = 10;
-
+    public float detectDistance = 10f;
+    public float detectRadius = 10f;
+    
+    float timer;
+    bool isEnemySeen;
+    PetHealth petHealth;
     Animator anim;
 
-    void Start()
+    void Awake()
     {
         anim = GetComponent<Animator>();
+        petHealth = GetComponent<PetHealth>();
     }
 
     // Update is called once per frame
     void Update()
     {
-        
+        timer += Time.deltaTime;
     }
 
-    // TODO: use raycast instead of collider
     void OnTriggerEnter(Collider other)
     {
         EnemyHealth enemyHealth = other.GetComponent<EnemyHealth>();
 
-        if (enemyHealth != null)
+        if (timer >= timeBetweenAttack && enemyHealth != null && petHealth.currentHealth > 0)
         {
-            anim.SetTrigger("Attack");
-
-            //Lakukan Take Damage
-            enemyHealth.TakeDamage(damage, new Vector3(0, 0, 0));
+            AttackEnemy(enemyHealth);
         }
     }
+
+    void AttackEnemy(EnemyHealth enemyHealth)
+    {
+        // Reset timer
+        timer = 0f;
+
+        anim.SetTrigger("Attack");
+
+        //Lakukan Take Damage
+        enemyHealth.TakeDamage(damage, new Vector3(0, 0, 0));
+    }
 }