void Update() { if (manager.round != Rounds.End && availableList.Count > 0 && furnitureList.Count > 0) { for (int i = 0; i < availableList.Count; i++) { if (Input.GetAxis(availableList [i].horizontal) != 0 || Input.GetAxis(availableList [i].vertical) != 0) { print("new mimic !"); int parentIndex = Mathf.RoundToInt(Random.Range(0, furnitureList.Count)); Transform parent = furnitureList [parentIndex]; parent.GetComponent <Collider> ().material = slippery; parent.GetComponent <Rigidbody> ().mass = newMass; GameObject newPlayer = GameObject.Instantiate(mimic, parent); mimicList.Add(newPlayer); MimicController mimicScript = newPlayer.GetComponent <MimicController> (); mimicScript.horizontal = availableList [i].horizontal; mimicScript.vertical = availableList [i].vertical; mimicScript.moveSpeed = availableList [i].moveSpeed; mimicScript.lungeSpeed = availableList [i].lungeSpeed; //mimicScript.source = source; availableList.RemoveAt(i); furnitureList.RemoveAt(parentIndex); } } } }
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); }