From a398971bb8e88c995aa5e77e1b0bab38964352d6 Mon Sep 17 00:00:00 2001 From: Enderageous <13520012@std.stei.itb.ac.id> Date: Sat, 15 Apr 2023 11:58:16 +0700 Subject: [PATCH] feat: pet movement --- Assets/Prefabs/PetAttack.prefab | 13 ++++++ Assets/Prefabs/PetBuff.prefab | 13 ++++++ Assets/Prefabs/PetHeal.prefab | 13 ++++++ Assets/Scripts/Pets/PetAttack.cs | 34 +++++++--------- Assets/Scripts/Pets/PetMovePassive.cs | 47 ++++++++++++++++++++++ Assets/Scripts/Pets/PetMovePassive.cs.meta | 11 +++++ 6 files changed, 111 insertions(+), 20 deletions(-) create mode 100644 Assets/Scripts/Pets/PetMovePassive.cs create mode 100644 Assets/Scripts/Pets/PetMovePassive.cs.meta diff --git a/Assets/Prefabs/PetAttack.prefab b/Assets/Prefabs/PetAttack.prefab index 9ce157c..5e6c2f5 100644 --- a/Assets/Prefabs/PetAttack.prefab +++ b/Assets/Prefabs/PetAttack.prefab @@ -9963,6 +9963,7 @@ GameObject: - component: {fileID: 13644992} - component: {fileID: 2859551716155522660} - component: {fileID: 8217030031159983572} + - component: {fileID: 479495181824612262} m_Layer: 6 m_Name: PetAttack m_TagString: Untagged @@ -10200,3 +10201,15 @@ MonoBehaviour: startingHealth: 100 currentHealth: 0 deathClip: {fileID: 0} +--- !u!114 &479495181824612262 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680115193894871933} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c9e6981141751ab47b36e170ae174c63, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/PetBuff.prefab b/Assets/Prefabs/PetBuff.prefab index 447dc4c..6443143 100644 --- a/Assets/Prefabs/PetBuff.prefab +++ b/Assets/Prefabs/PetBuff.prefab @@ -9933,6 +9933,7 @@ GameObject: - component: {fileID: 11400006} - component: {fileID: 2044756667345344672} - component: {fileID: 3682937918000804156} + - component: {fileID: 342778600753362817} m_Layer: 6 m_Name: PetBuff m_TagString: Untagged @@ -10179,3 +10180,15 @@ MonoBehaviour: startingHealth: 100 currentHealth: 0 deathClip: {fileID: 0} +--- !u!114 &342778600753362817 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3606018136342516863} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c9e6981141751ab47b36e170ae174c63, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/PetHeal.prefab b/Assets/Prefabs/PetHeal.prefab index da0ae00..626feab 100644 --- a/Assets/Prefabs/PetHeal.prefab +++ b/Assets/Prefabs/PetHeal.prefab @@ -198,6 +198,7 @@ GameObject: - component: {fileID: 2965714918109986525} - component: {fileID: 2915336849517772464} - component: {fileID: 9025456973597242216} + - component: {fileID: -1583485313455065399} m_Layer: 6 m_Name: PetHeal m_TagString: Untagged @@ -433,6 +434,18 @@ MonoBehaviour: startingHealth: 100 currentHealth: 0 deathClip: {fileID: 0} +--- !u!114 &-1583485313455065399 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5172213328979931919} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c9e6981141751ab47b36e170ae174c63, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &2965714917986399086 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Pets/PetAttack.cs b/Assets/Scripts/Pets/PetAttack.cs index 52ab77b..0f7214b 100644 --- a/Assets/Scripts/Pets/PetAttack.cs +++ b/Assets/Scripts/Pets/PetAttack.cs @@ -1,18 +1,21 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using System.Linq; public class PetAttack : MonoBehaviour { public float timeBetweenAttacks = 0.5f; public int attackDamage = 10; - + GameObject[] enemy; + GameObject[] enemyInRange; Animator anim; GameObject player; PlayerHealth playerHealth; EnemyHealth enemyHealth; bool playerInRange; + bool attacking; float timer; @@ -20,24 +23,15 @@ public class PetAttack : MonoBehaviour { player = GameObject.FindGameObjectWithTag ("Player"); playerHealth = player.GetComponent <PlayerHealth> (); - enemyHealth = GetComponent<EnemyHealth>(); anim = GetComponent <Animator> (); } - void OnTriggerEnter (Collider other) - { - if(other.gameObject == player) - { - playerInRange = true; - } - } - - void OnTriggerExit (Collider other) + void OnTriggerStay(Collider other) { - if(other.gameObject == player) - { - playerInRange = false; - } + if (enemy.Contains(other.gameObject)) + { + Attack(other.gameObject); + } } @@ -46,9 +40,9 @@ public class PetAttack : MonoBehaviour if (!GameManager.isPause) { timer += Time.deltaTime; - if(timer >= timeBetweenAttacks && playerInRange && enemyHealth.currentHealth > 0) + if(timer >= timeBetweenAttacks) { - Attack (); + attacking = true; } if (playerHealth.currentHealth <= 0) @@ -59,14 +53,14 @@ public class PetAttack : MonoBehaviour } - void Attack () + void Attack (GameObject enemy) { if (!GameManager.isPause) { - timer = 0f; if (playerHealth.currentHealth > 0) { - playerHealth.TakeDamage (attackDamage); + enemyHealth = enemy.GetComponent<EnemyHealth>(); + enemyHealth.TakeDamage(attackDamage, transform.position); } } } diff --git a/Assets/Scripts/Pets/PetMovePassive.cs b/Assets/Scripts/Pets/PetMovePassive.cs new file mode 100644 index 0000000..c041cc0 --- /dev/null +++ b/Assets/Scripts/Pets/PetMovePassive.cs @@ -0,0 +1,47 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class PetMovePassive : MonoBehaviour +{ + Transform player; + UnityEngine.AI.NavMeshAgent nav; + + + private void Awake () + { + player = GameObject.FindGameObjectWithTag ("Player").transform; + nav = GetComponent <UnityEngine.AI.NavMeshAgent> (); + } + + void OnTriggerEnter (Collider other) + { + if(other.gameObject == player) + { + nav.enabled = false; + } + } + + void OnTriggerExit (Collider other) + { + if(other.gameObject == player) + { + nav.enabled = true; + } + } + + void Update () + { + if (!GameManager.isPause) { + + if (nav.enabled == true) + { + nav.SetDestination (player.position); + } + + } + if(GameManager.isPause){ + nav.enabled=false; + } + } +} diff --git a/Assets/Scripts/Pets/PetMovePassive.cs.meta b/Assets/Scripts/Pets/PetMovePassive.cs.meta new file mode 100644 index 0000000..c412bcf --- /dev/null +++ b/Assets/Scripts/Pets/PetMovePassive.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c9e6981141751ab47b36e170ae174c63 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: -- GitLab