Exemplo n.º 1
0
    void Die()
    {
        ScreenShakeGenerator shake = Camera.main.GetComponent <ScreenShakeGenerator> ();

        shake.ShakeScreen(0.2f, 0.2f);
        RoundManager manager = Camera.main.GetComponent <RoundManager> ();

        manager.round  = Rounds.End;
        manager.winner = Winner.Mimics;
        Instantiate(particle, transform.position, particle.transform.rotation);
        source.PlayOneShot(death);
        Destroy(gameObject);
    }
Exemplo n.º 2
0
	void OnCollisionEnter(Collision col)
	{
		MimicManager mimics = Camera.main.GetComponent<MimicManager> ();

		if (col.gameObject.tag != "BottomWall") 
		{
			/*rb.isKinematic = true;
			transform.parent = col.transform;
			isFlying = false;*/

			if (col.gameObject.tag == "Furniture") 
			{
				Transform mimic = col.transform.Find ("Mimic(Clone)");

				if (mimic != null) 
				{
					//Screenshake
					ScreenShakeGenerator shake = Camera.main.GetComponent<ScreenShakeGenerator> ();
					shake.ShakeScreen (0.1f, 0.2f);

					//Sound
					source.PlayOneShot (hitMimic);

					//Blood
					Instantiate (splatter, new Vector3 (mimic.position.x, 0.01f, mimic.position.z), mimic.rotation);

					//Remove from list

					mimics.mimicList.Remove (mimic.gameObject);

					//Win condition
					if (mimics.mimicList.Count == 0) 
					{
						RoundManager manager = Camera.main.GetComponent<RoundManager> ();
						manager.round = Rounds.End;
						manager.winner = Winner.Human;
					}

					//Kill mimic
					mimic.GetComponent<MimicController> ().Die ();

					//Gain arrow
					if (human.ammo < 3) 
					{
						human.ammo++;
						//source.PlayDelayed (boltRecup, 0.5f);
						StartCoroutine (human.hud.UpdateArrows ());
					}
				} 

				else 
				{
					source.PlayOneShot (hitWood);
					col.gameObject.GetComponent<NavMeshObstacle> ().enabled = false;
					col.gameObject.GetComponent<Rigidbody> ().isKinematic = true;
					col.collider.enabled = false;

					Transform brokenMesh = col.transform.Find("Mesh_Broken");
					Transform mesh = col.transform.Find ("Mesh");
					brokenMesh.gameObject.SetActive (true);
					mesh.gameObject.SetActive (false);
					Vector3 force = rb.velocity.normalized;
					force.y = 0;
					brokenMesh.GetComponent<Destructible> ().direction = force;

					mimics.furnitureList.Remove (col.transform);

				}
			}
		} 

		if (human.ammo == 0) 
		{
			foreach (GameObject m in mimics.mimicList) 
			{
				MimicController mimicCont = m.GetComponent<MimicController> ();
				mimicCont.moveSpeed = mimicCont.moveSpeed * 2;
				mimicCont.lungeSpeed = mimicCont.lungeSpeed * 3;
				mimicCont.speed = mimicCont.moveSpeed;
			}

			foreach (PlayerClass player in mimics.availableList)
			{
				player.moveSpeed = player.moveSpeed * 2;
				player.lungeSpeed = player.lungeSpeed * 3;
			}
		}

		Destroy (gameObject);
	}