void Start() { /// Initializations soundFX = GetComponent <audioPlay>(); swordAoE = GameObject.Find("SwordColl").GetComponent <SphereCollider> (); cameraShake.shake = 0; isDead = false; stats = GameObject.Find("DungeonMaster").GetComponent <DungeonMaster> ().playerStats; ui = GameObject.FindGameObjectWithTag("UI").GetComponent <uiDisplay> (); shootArrow = gameObject.GetComponentInChildren <ShootArrow> (); shootMultiArrow = gameObject.GetComponentInChildren <ShootMultiArrow> (); changeWeapon(0); controller = this.gameObject.GetComponent <CharacterController> (); ReceiverDamage receiver = GetComponent <ReceiverDamage> (); if (receiver == null) { print("RECEIVER IS NULL"); } else { receiver.setStats(stats); } SenderDamage[] sender = GetComponentsInChildren <SenderDamage> (); if (sender != null) { foreach (SenderDamage sd in sender) { Debug.Log(sd.gameObject.name); sd.setStats(stats); } } ui.UpdateHealth(stats.getCurHealth(), stats.getMaxHealth()); cc = gameObject.GetComponent <CharacterController> (); rb = gameObject.GetComponent <Rigidbody> (); concealed = false; }
void Update() // every frame { if (!swordAoE) { swordAoE = GameObject.Find("SwordColl").GetComponent <SphereCollider> (); } /// CHECK IF BOW SPECIAL AND SWORD SPECIAL IS UNLOCKED if (bowSpecialUnlocked != true) { canBowSpecial = false; } if (swordSpecialunlocked != true) { canSwordSpecial = false; } /// SWORD SPECIAL AOE RADIUS if (PlayerPrefs.GetInt("AoE") == 2) { swordAoE.radius = 45; } else if (PlayerPrefs.GetInt("AoE") == 3) { swordAoE.radius = 60; } else { swordAoE.radius = 30; } /// SWORD ROF if (PlayerPrefs.GetInt("SwordRoF") == 1) { swordAttackRoF = 1.25f; } else if (PlayerPrefs.GetInt("SwordRoF") == 2) { swordAttackRoF = 1.5f; } else if (PlayerPrefs.GetInt("SwordRoF") == 3) { swordAttackRoF = 2; } else { swordAttackRoF = 1; } /// BOW ROF if (PlayerPrefs.GetInt("BowRoF") == 1) { bowAttackRoF = 1.5f; } else if (PlayerPrefs.GetInt("BowRoF") == 2) { bowAttackRoF = 1.75f; } else if (PlayerPrefs.GetInt("BowRoF") == 3) { bowAttackRoF = 2; } else { bowAttackRoF = 1.25f; } /// PLAYER AGILITY if (PlayerPrefs.GetInt("Agility") == 1 && animator.GetBool("Moving") && animator.GetBool("Running") && animator.GetBool("attacking") != true) { animator.speed = 1.25f; } else if (PlayerPrefs.GetInt("Agility") == 2 && animator.GetBool("Moving") && animator.GetBool("Running") && animator.GetBool("attacking") != true) { animator.speed = 1.5f; } else if (PlayerPrefs.GetInt("Agility") == 3 && animator.GetBool("Moving") && animator.GetBool("Running") && animator.GetBool("attacking") != true) { animator.speed = 2; } else if (animator.GetBool("attacking") != true) { animator.speed = 1; } /// *** DASH *** if (Input.GetButtonDown("Dash") && uiDisplay.stamina[0].fillAmount >= 1 && !isDead) // If dash pressed and player has enough stamina { if (!dashing) { soundFX.Dash(); // Reduce stamina uiDisplay.stamina[0].fillAmount -= 1; dashing = true; dust.enableEmission = true; dust.Play(); } } /// Dashing particle and length if (dashing) { dashTimer += Time.deltaTime; if (dashTimer < dashTime && Time.deltaTime < 1f) { Dash(dashDist * Time.deltaTime / dashTime); } else if (Time.deltaTime > 1f) { Dash(dashDist); dashTimer = 0; dashing = false; dust.enableEmission = false; } else { Dash(dashDist * Time.deltaTime / dashTime); dashTimer = 0; dashing = false; dust.enableEmission = false; } } /// *** USE POTION *** if (Input.GetButtonDown("UsePotion") && !isDead) { if (PlayerPrefs.GetInt("potions") > 0 && stats.getCurHealth() != stats.getMaxHealth()) // If player has a potion to use and health is not full { soundFX.MedpackUse(); PlayerPrefs.SetInt("potions", PlayerPrefs.GetInt("potions") - 1); stats.setCurHealth(stats.getCurHealth() + (stats.getMaxHealth() / 4)); ui.UpdateHealth(stats.getCurHealth(), stats.getMaxHealth()); } } // If player's health falls <=0 if (stats.getCurHealth() <= 0 && isDead == false) { isDead = true; animator.SetTrigger("Death"); uiDisplay.deathUI.SetActive(true); } RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(uiDisplay.cursor.transform.position); if (Physics.Raycast(ray, out hit)) { lookTarget = hit.point; } //Get input from controls float z = Input.GetAxisRaw("Vertical") + Input.GetAxisRaw("JoystickMoveY"); float x = (Input.GetAxisRaw("Horizontal") + Input.GetAxisRaw("JoystickMoveX")); inputVec = new Vector3(x, 0, z); //Apply inputs to animator animator.SetFloat("Input X", x); animator.SetFloat("Input Z", z); // If player is inputing movement through controller if (Input.GetAxisRaw("JoystickMoveX") != 0 || Input.GetAxisRaw("JoystickMoveY") != 0) { usingController = true; } // Otherwise, if player is inputting movement through keyboard else if (Input.GetAxisRaw("Horizontal") != 0 || Input.GetAxisRaw("Vertical") != 0) { usingController = false; } if ((x != 0 || z != 0) && !attacking && !isDead && animator.GetBool("attacking") != true) // If player is moving { //set that character is moving animator.SetBool("Moving", true); animator.SetBool("Running", true); isMoving = true; } else { //character is not moving animator.SetBool("Moving", false); animator.SetBool("Running", false); isMoving = false; } /// *** NORMAL ATTACK *** if (Input.GetButtonDown("Fire1") && !attacking && !isDead && gameManager.showUpgradeMenu != true && animator.GetBool("attacking") != true) // if player uses normal attack { uiDisplay UI = GameObject.Find("_MainHUDCanvas").GetComponent <uiDisplay>(); // Face player towards mouse position arrow.arrowTarget = lookTarget; mousePosition = lookTarget; // Spawn particle effect on mouse location at the time of attack Instantiate(cursorResponse, lookTarget, Quaternion.identity); cursorPos = cursorResponse.position; lookTarget.y = this.transform.position.y; //Play attack animation if (currentWeapon == 0) // if sword is active { // Play sword attack animation animator.SetTrigger("Attack1Trigger"); } else // otherwise { // Face player towards mouse and play Bow attack animation transform.LookAt(lookTarget); animator.SetTrigger("BowAttackTrigger"); } } /// *** SPECIAL ATTACK *** if (Input.GetButtonDown("Fire2") && !attacking && !isDead && gameManager.showUpgradeMenu != true && animator.GetBool("attacking") != true) // if player uses special attack { /// Play attack animation if (currentWeapon == 0 && canSwordSpecial) // if sword is active and sword special attack is available { animator.SetBool("attacking", true); arrow.arrowTarget = lookTarget; mousePosition = new Vector3(Input.mousePosition.x, this.transform.position.y, Input.mousePosition.z); //Attack Cooldown uiDisplay UI = GameObject.Find("_MainHUDCanvas").GetComponent <uiDisplay>(); //Face player towards mouse position Instantiate(cursorResponse, lookTarget, Quaternion.identity); cursorPos = cursorResponse.position; lookTarget.y = this.transform.position.y; transform.LookAt(lookTarget); // Play sword special animation animator.SetTrigger("SwordSpecial"); // Start sword special cooldown StartCoroutine(CoolDown("sword")); } else if (currentWeapon == 1 && canBowSpecial) // otherwise, if bow is active and bow special attack is available { animator.SetBool("attacking", true); arrow.arrowTarget = lookTarget; mousePosition = new Vector3(Input.mousePosition.x, this.transform.position.y, Input.mousePosition.z); //Attack Cooldown uiDisplay UI = GameObject.Find("_MainHUDCanvas").GetComponent <uiDisplay>(); //Face player towards mouse position Instantiate(cursorResponse, lookTarget, Quaternion.identity); cursorPos = cursorResponse.position; lookTarget.y = this.transform.position.y; transform.LookAt(lookTarget); // Play bow special animation animator.SetTrigger("BowMultiAttackTrigger"); // Start bow special cooldown StartCoroutine(CoolDown("bow")); } } /// *** WEAPON SWAP *** if (Input.GetButtonDown("WeaponSwap") && !attacking && !isDead && gameManager.showUpgradeMenu != true) { if (currentWeapon == 0) { changeWeapon(1); } else { changeWeapon(0); } } // If player not attacking, update movement if (Input.GetButtonDown("Fire1") == false) { UpdateMovement(); } }