// Update is called once per frame void Update() { bulletColor = playerScript.currColors; // obtain mouse pos to shoot at mouse Vector3 mousepos = Input.mousePosition; //get mouse position mousepos = Camera.main.ScreenToWorldPoint(mousepos); // calculate mous position Vector2 dir = new Vector2(mousepos.x - transform.position.x, mousepos.y - transform.position.y); //set direction, up. transform.up = dir; //right mouse clicked, add bullet count if (Input.GetButtonDown("Fire1")) { //fire bullet fireProjectile(); } if (Input.GetButton("Fire1") && playerScript.green_bullets > 0 && playerScript.currColors == green) { //fire bullet fireProjectile(); } }
void Start() { sr = GetComponent <SpriteRenderer>(); playerScript = GetComponent <PlayerScript>(); bulletColor = playerScript.currColors; red = PlayerScript.myColors.RED; blue = PlayerScript.myColors.BLUE; green = PlayerScript.myColors.GREEN; white = PlayerScript.myColors.DEFAULT; }
private void GetMyColor() { int random = (int)Random.Range(0, 3); if (random == 0) { sr.color = red; currColor = PlayerScript.myColors.RED; } else if (random == 1) { sr.color = blue; currColor = PlayerScript.myColors.BLUE; } else { sr.color = green; currColor = PlayerScript.myColors.GREEN; } }
private void Attack() { if (!bulletCd) { if (waves > 0 && Time.time > nextFire) { nextFire = Time.time + fireRate; bool random = false; if (currHp <= 250) { random = true; } spawnProjectile(Random.Range(numProjectiles - 5, numProjectiles + 5), currColor, random); StartCoroutine(waitZeroPointFive()); waves -= 1; } else if (waves == 0) { bulletCd = true; StartCoroutine(BulletCd()); waves = Random.Range(1, 3); colorCount += 1; } } if (colorCount == maxColorCount) { int colorCode = Random.Range(0, 3); // 0 red, 1 blue, 2 green switch (colorCode) { case 0: currColor = PlayerScript.myColors.RED; break; case 1: currColor = PlayerScript.myColors.BLUE; break; case 2: currColor = PlayerScript.myColors.GREEN; break; default: currColor = PlayerScript.myColors.RED; break; } colorCount = 0; } movementCD -= Time.time; if (player != null) { dist = player.position.x - transform.position.x; } if (dist < 0) { dist = dist * -1; } if (dist <= 0f) { if (cd == false) { SentTeeth(); StartCoroutine(TeethColdDown()); } } if (dist <= 2f) { greenTeeth.SetActive(true); } else { greenTeeth.SetActive(false); } if (laserCd == false) { LaserAttack(); StartCoroutine(MyLaserCd()); } }
void spawnProjectile(int num, PlayerScript.myColors color, bool random) { float angleStep = 360f / num; float angle = 0f; // choose bullet GameObject bullet; if (random) { int colorCode = Random.Range(0, 3); // 0 red, 1 blue, 2 green switch (colorCode) { case 0: bullet = boss_red_bullet; break; case 1: bullet = boss_blue_bullet; break; case 2: bullet = boss_green_bullet; break; default: bullet = boss_red_bullet; break; } } else { switch (color) { case PlayerScript.myColors.RED: bullet = boss_red_bullet; break; case PlayerScript.myColors.BLUE: bullet = boss_blue_bullet; break; case PlayerScript.myColors.GREEN: bullet = boss_green_bullet; break; default: bullet = boss_red_bullet; break; } } for (int i = 0; i <= num - 1; i++) { float dirXpos = transform.position.x + Mathf.Sin((angle * Mathf.PI) / 180) * radius; float dirYpos = transform.position.y + Mathf.Cos((angle * Mathf.PI) / 180) * radius; Vector3 projectileVector = new Vector3(dirXpos, dirYpos, 0); Vector3 projectileMoveDir = (projectileVector - launchPoint.transform.position).normalized * bulletSpeed; var proj = Instantiate(bullet, launchPoint.transform.position, Quaternion.identity); proj.GetComponent <Rigidbody2D>().velocity = new Vector2(projectileMoveDir.x, projectileMoveDir.y); angle += angleStep; Destroy(proj, 5f); } }