void Update() { if (timer > 0.0f) { timer -= Time.deltaTime; } if (GameObject.Find("spawner").GetComponent <spawner>().currentGameSatae == spawner.gamestate.wave && equipped == wepons.shotty) { if (onceWave == true) { onceWave = false; oncePre = true; } if (Input.GetButton("Fire2") == true && onceADS == true) { onceADS = false; StopCoroutine(spreadcoro); spreadcoro = bulletspread(0.02f, bulletSpread); StartCoroutine(spreadcoro); } if (Input.GetButton("Fire2") == false && onceADS == false) { onceADS = true; StopCoroutine(spreadcoro); spreadcoro = bulletspread(0.1f, bulletSpread); StartCoroutine(spreadcoro); } if (Input.GetButton("Fire1") == true) { if (timer <= 0.0f) { StartCoroutine(shot()); for (int j = 0; j < pellets; j++) { RaycastHit[] Hits; float yrand = Random.Range(bulletSpread, -bulletSpread); float xrand = Random.Range(Mathf.Sqrt(Mathf.Pow(bulletSpread, 2) - Mathf.Pow(yrand, 2)), -Mathf.Sqrt(Mathf.Pow(bulletSpread, 2) - Mathf.Pow(yrand, 2))); Vector3 vec3dir = new Vector3(xrand, yrand, 1); Hits = Physics.RaycastAll(transform.position, transform.TransformDirection(vec3dir), MaxRange); for (int i = 0; i < Hits.Length; i++) { RaycastHit Hit = Hits[i]; if (Hit.collider.gameObject.transform.tag == "enemy") { GameObject enemy = Hit.collider.gameObject; Vector3 hitposition = Hit.point + (Hit.normal * 0.4f); GameObject text = Instantiate(damagedText, hitposition, Quaternion.identity); text.transform.SetParent(Hit.collider.gameObject.transform, true); float dist = Vector3.Distance(this.gameObject.transform.position, Hit.point); float falloff = Mathf.Clamp(1.5f * Mathf.Cos(Mathf.Pow(dist / MaxRange, 0.3f) * (Mathf.PI / 2)), 0.0f, 1.0f); float damage = falloff * (MaxDamage / pellets); text.gameObject.transform.GetChild(0).GetComponent <Text>().text = "-" + damage.ToString("F0"); enemy.GetComponent <enemy>().hp -= damage; } if (Hit.collider.gameObject.layer == 9) //ground and wall { Quaternion hitRotation = Quaternion.FromToRotation(Vector3.forward, Hit.normal); Vector3 hitposition = Hit.point + (Hit.normal * 0.01f); GameObject hole = Instantiate(bulletHole, hitposition, hitRotation); } } } } } } if (GameObject.Find("spawner").GetComponent <spawner>().currentGameSatae == spawner.gamestate.pre) { if (oncePre == true) { equipped = wepons.build; GameObject.Find("Canvas").gameObject.transform.GetChild(4).gameObject.SetActive(true); GameObject.Find("Canvas").gameObject.transform.GetChild(5).gameObject.SetActive(true); GameObject.Find("Canvas").gameObject.transform.GetChild(6).gameObject.SetActive(true); oncePre = false; onceWave = true; bulletSpread = 0.001f; } if (Input.GetKeyDown(KeyCode.Alpha1)) { GameObject.Find("Canvas").GetComponent <EqupedWepon>().fromto(wepons.build); equipped = wepons.build; } if (Input.GetKeyDown(KeyCode.Alpha2)) { GameObject.Find("Canvas").GetComponent <EqupedWepon>().fromto(wepons.missileLauncher); equipped = wepons.missileLauncher; } if (Input.GetButton("Submit") == true) { NavMesh.CalculatePath(GameObject.Find("spawner").transform.position, GameObject.Find("spawner").GetComponent <spawner>().posA, NavMesh.AllAreas, path); if (path.status == NavMeshPathStatus.PathComplete) { equipped = wepons.shotty; GameObject.Find("Canvas").gameObject.transform.GetChild(4).gameObject.SetActive(false); GameObject.Find("Canvas").gameObject.transform.GetChild(5).gameObject.SetActive(false); GameObject.Find("Canvas").gameObject.transform.GetChild(6).gameObject.SetActive(false); GameObject.Find("spawner").GetComponent <spawner>().currentGameSatae = spawner.gamestate.wave; } else { Debug.Log("no valid path"); } for (int i = 0; i < path.corners.Length - 1; i++) { Debug.DrawLine(path.corners[i], path.corners[i + 1], Color.red); } } if (equipped == wepons.build) { RaycastHit Hit; Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out Hit); if (Input.GetButton("Fire1") == true) { if (timer <= 0.0f) { timer = placerate; if (Hit.collider.gameObject.layer == 9 || Hit.collider.gameObject.tag == "block") { GameObject temp = Instantiate(block, Hit.point, Quaternion.identity); surface.BuildNavMesh(); GameObject.Find("sliderholder").GetComponent <stonks>().chnagecash(-2.0f); } } } if (Input.GetButton("Fire2") == true) { if (Hit.collider.tag == "block") { Destroy(Hit.collider.gameObject); surface.BuildNavMesh(); } } } if (equipped == wepons.missileLauncher) { RaycastHit Hit; Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out Hit); if (Input.GetButton("Fire1") == true) { if (timer <= 0.0f) { timer = placerate; if (Hit.collider.gameObject.layer == 9 || Hit.collider.gameObject.tag == "block") { GameObject temp = Instantiate(Launcher, new Vector3(Hit.point.x, Hit.point.y + 0.01f, Hit.point.z), Quaternion.identity * Quaternion.Euler(90, 0, 0)); } } } } } }
void Start() { equipped = wepons.build; spreadcoro = bulletspread(bulletSpread, bulletSpread); path = new NavMeshPath(); }