// Update is called once per frame void Update() { if (!mAttacked) { moveTarget = lunchTargets[0].transform.position; agent.speed = defaultSpeed; agent.acceleration = defaultAccel; if ((Time.time > lungeCooldown + lungeStartTime) && canEverLunge) { canLunge = true; } } else { if (Time.time > lungeChargeTime + lungeStartTime) { agent.speed = lungeSpeed; GetComponent <Animator>().Play("Dive"); agent.acceleration = lungeAccel; Ray pathToPoint = new Ray(transform.position, lungeTarget - transform.position); lungeTarget = pathToPoint.GetPoint(2f); moveTarget = lungeTarget; } if (Time.time > lungeChargeTime * 2f + lungeStartTime) { agent.speed = 0f; //GetComponent<Animator>().SetFloat("Speed", 0f); } if (Time.time > lungeChargeTime * 4f + lungeStartTime) { mAttacked = false; } } if (!mStunCheck.IsStunned) { agent.Resume(); GetComponent <Animator>().SetBool("ShockBool", false); mStunCheck.UpdateStunInvinciblity(); //For everything on this level dino can eat foreach (GameObject meal in lunchTargets) { if (meal != null) { //Distance from dino to the potential meal float newDistance = Vector3.Distance(this.transform.position, meal.transform.position); //Distance it was travel to last float oldDistance = Vector3.Distance(this.transform.position, moveTarget); //If the potential meal is further from the if (newDistance <= oldDistance) { moveTarget = meal.transform.position; victim = meal; } } } if (Vector3.Distance(this.transform.position, moveTarget) < chaseDistance) { if (CanSeePastObstacles()) { agent.SetDestination(moveTarget); GetComponent <Animator>().SetFloat("Speed", 1f); } } else { agent.Stop(); GetComponent <Animator>().SetFloat("Speed", 0f); } //lunge when the target is close if (victim != null && Vector3.Distance(this.transform.position, victim.transform.position) < 3) { if (!mAttacked && canLunge && canEverLunge) { if (mAudioManager) { mAudioManager.PlaySoundEffect("Dino Growl"); } mAttacked = true; canLunge = false; agent.speed = 0f; //GetComponent<Animator>().SetFloat("Speed", 0f); lungeStartTime = Time.time; //moveTarget = victim.transform.position; //UnityEngine.Debug.Log(moveTarget); lungeTarget = victim.transform.position; Ray pathToPoint = new Ray(transform.position, lungeTarget - transform.position); moveTarget = pathToPoint.GetPoint(1f); //UnityEngine.Debug.Log(moveTarget); } } if (victim != null && Vector3.Distance(this.transform.position, victim.transform.position) < 1) { GetComponent <Animator>().Play("Eat"); if (victim.GetComponent <PlayerMovement>() == null) { victim.GetComponent <Animator>().Play("Eat"); } if (!eatingThings) { if (mAudioManager) { mAudioManager.PlaySoundEffect("Dino Growl"); eatingThings = true; } } if (victim == lunchTargets[0] || (victim.GetComponent <CompanionAI>() != null && victim.GetComponent <CompanionAI>().vitalNPC == true)) { if (victim.GetComponent <PlayerMovement>() != null && victim.GetComponent <PlayerMovement>().NumberofShields == 0) { victim.GetComponent <Animator>().Play("Eat"); if (victim.GetComponent <NavMeshAgent>().enabled == true) { victim.GetComponent <NavMeshAgent>().ResetPath(); victim.GetComponent <NavMeshAgent>().enabled = false; } //lunchTargets[0].GetComponent<PlayerMovement>().playDeathAnim(); Invoke("restartLevel", mGrowl.length); GameObject.Find("LevelHUDManager").GetComponent <LevelHUD>().playerDied = true; //lunchTargets[0].GetComponent<PlayerMovement>().playDeathAnim(); } else if (victim.tag == "Companion" && ((Vector3.Distance(victim.transform.position, lunchTargets[0].transform.position) <= 2f && lunchTargets[0].GetComponent <PlayerMovement>().NumberofShields == 0) || (Vector3.Distance(victim.transform.position, lunchTargets[0].transform.position) > 2f))) { victim.GetComponent <CompanionAI>().playDeathAnim(); Invoke("restartLevel", mGrowl.length); GameObject.Find("LevelHUDManager").GetComponent <LevelHUD>().vitalNPCDied = true; //lunchTargets[0].GetComponent<CompanionAI>().playDeathAnim(); //GetComponent<Keybearer>().posessedKey = victim.GetComponent<Keybearer>().posessedKey; //Destroy(victim); agent.Stop(); agent.ResetPath(); victim = lunchTargets[0]; //moveTarget = victim.transform.position; //mAttacked = false; } else { Invoke("restartLevel", 0f); } } else { if (victim.GetComponent <Keybearer>() != null) { if (victim.GetComponent <Keybearer>().enabled == true) { GetComponent <Keybearer>().enabled = true; GetComponent <Keybearer>().posessedKey = victim.GetComponent <Keybearer>().posessedKey; } } StartCoroutine(WaitToDestroy(victim)); victim = lunchTargets[0]; moveTarget = victim.transform.position; } } } else { mStunCheck.UpdateStunnedTimer(); if (victim != null) { moveTarget = victim.transform.position; } agent.Stop(); if (GetComponent <Stunable>().mTypeofStun == Stunable.StunType.ShockStun) { GetComponent <Animator>().SetBool("ShockBool", true); } mAttacked = false; } }
// Update is called once per frame void Update() { if (agent.velocity == Vector3.zero) { mBoostSpeed = false; } if (mCoughplaying) { if (Time.time > mCoughSoundEffectStartTimer + mCoughSoundEffect.length) { mCoughplaying = false; } } if (mShockplaying) { if (Time.time > mShockSoundEffectStartTimer + mShockSoundEffect.length) { mShockplaying = false; } } if ((NumberofShields > 0) && (mSidHover)) { if (Time.time > mSidHoverStartTimer + mSIDHoverEffect.length) { mSidHover = false; } } if (mSidDied) { if (Time.time > mSidDieStartTimer + mSIDDieEffect.length) { mSidDied = false; } } if ((NumberofShields > 0) && (!mSidHover)) { mAudioManager.PlaySoundEffect("Sid Hover"); mSidHover = true; mSidHoverStartTimer = Time.time; } //Decreasing breath while in gas if (mInGas) { if (mHasGasMask) { mGasBarLength = (mGasMaskTimer - (Time.time - mGasStartTime)) * 10; if (Time.time > mGasStartTime + mGasMaskTimer) { mHasGasMask = false; foreach (Gas gas in mGasesVisited) { gas.mGasMaskAffected = false; } mGasStartTime = Time.time; } } else { if (!mCoughplaying) { mAudioManager.PlaySoundEffect("Cough"); mCoughplaying = true; mCoughSoundEffectStartTimer = Time.time; } mGasBarLength = (mGasTimer - (Time.time - mGasStartTime)) * 10; if (Time.time > mGasStartTime + mGasTimer) { mAudioManager.audio.Stop(); mAudioManager.PlaySoundEffect("Zombie Growl"); mInGas = false; playDeathAnim(); agent.enabled = false; GetComponentInChildren <SkinnedMeshRenderer>().enabled = false; foreach (MeshRenderer mesh in GetComponentsInChildren <MeshRenderer>()) { mesh.enabled = false; } GameObject zombie = (GameObject)Instantiate(Resources.Load("Zombie")); zombie.transform.position = this.gameObject.transform.position; zombie.transform.rotation = this.gameObject.transform.rotation; Invoke("KilledbyGas", 2); //Application.LoadLevel(Application.loadedLevel); // Assets.CustomeScripts.Metrics.AddMetric("Killer ID was:", "The Gas"); } } } //Decreasing shock tolerance while on a shock panel if (mInShock) { if (!mShockplaying) { mAudioManager.PlaySoundEffect("Shock"); mShockplaying = true; mShockSoundEffectStartTimer = Time.time; anim.SetBool("ShockBool", true); } mShockBarLength = (mShockTimer - (Time.time - mShockStartTime)) * 10; if (Time.time > mShockStartTime + mShockTimer) { mAudioManager.audio.Stop(); //mAudioManager.PlaySoundEffect("Zombie Growl"); mInShock = false; playDeathAnim(); agent.enabled = false; Invoke("KilledbyShock", 2); //Application.LoadLevel(Application.loadedLevel); //Assets.CustomeScripts.Metrics.AddMetric("Killer ID was:", "The Shock"); } } if (!mStunCheck.IsStunned) { if (agent.enabled == true) { agent.Resume(); anim.SetBool("ShockBool", false); } mStunCheck.UpdateStunInvinciblity(); if (mBoostSpeed == true) { decreaseSpeedBoostTimer(); } else { agent.speed = speed; agent.acceleration = acceleration; } //Click-To-Move controls if (Input.GetMouseButton(0) && agent.enabled == true && !useJoystick) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { if (hit.collider.tag != "Companion" && !mouseOverGUI) { if (clickToPathfind) { clickToMoveTarget = hit.point; clickToMoveIndicator.GetComponent <ClickToMovePointer>().RevealAtLocation(clickToMoveTarget); clickToMoveTarget.y = 0; // clickToMoveTarget - new Vector3(0, clickToMoveTarget.y, 0); agent.SetDestination(clickToMoveTarget); } else { Ray pathToPoint = new Ray(transform.position, hit.point - transform.position); clickToMoveTarget.y = 0; // = clickToMoveTarget - new Vector3(0, clickToMoveTarget.y, 0); clickToMoveTarget = pathToPoint.GetPoint(1f); clickToMoveIndicator.GetComponent <ClickToMovePointer>().RevealAtLocation(hit.point); agent.SetDestination(clickToMoveTarget); } } } //else //anim.SetFloat("Speed", 0f); } //End of Click-To-Move controls //Virtual Joystick Controls if (Input.GetMouseButton(0) && agent.enabled == true && useJoystick) { Vector3 joystickDestination = transform.position + (new Vector3(Joystick.mNormals.x, 0, Joystick.mNormals.y)); agent.SetDestination(joystickDestination); Debug.Log("Using Joystick to Move"); } float vertAccel = Input.acceleration.y + 0.5f; if ((Mathf.Abs(Input.acceleration.x) > 0.2f || Mathf.Abs(vertAccel) > 0.2f) && canTilt) { accelNeutral = false; clickToMoveIndicator.GetComponent <ClickToMovePointer>().Hide(); } else { accelNeutral = true; } if (!accelNeutral && !((Input.GetAxis("Horizontal") != 0 || Input.GetAxis("Vertical") != 0) || Input.GetMouseButton(0))) { float horzMove = Input.acceleration.x / Mathf.Abs(Input.acceleration.x); float vertMove = vertAccel / Mathf.Abs(vertAccel); if (Mathf.Abs(Input.acceleration.x) <= 0.2f) { horzMove = 0f; } if (Mathf.Abs(vertAccel) <= 0.2f) { vertMove = 0f; } clickToMoveTarget = transform.position + new Vector3(horzMove * speed, 0, vertMove * speed); if (agent.enabled == true) { agent.SetDestination(clickToMoveTarget); } } //WASD controls if (Input.GetAxis("Horizontal") != 0 || Input.GetAxis("Vertical") != 0) { clickToMoveIndicator.GetComponent <ClickToMovePointer>().Hide(); clickToMoveTarget = transform.position + new Vector3(Input.GetAxis("Horizontal") * 1f, 0, Input.GetAxis("Vertical") * 1f); if (agent.enabled == true) { agent.SetDestination(clickToMoveTarget); } } //Hide the arrow if the player is at the arrow if (Vector3.Distance(this.transform.position, clickToMoveIndicator.transform.position) < 1f) { //Debug.Log("At the arrow."); clickToMoveIndicator.GetComponent <ClickToMovePointer>().Hide(); } if (!agent.hasPath) { clickToMoveIndicator.GetComponent <ClickToMovePointer>().Hide(); anim.SetFloat("Speed", 0f); } else { anim.SetFloat("Speed", 2f); } } else { mStunCheck.UpdateStunnedTimer(); if (agent.enabled == true) { agent.Stop(); } } }