示例#1
0
    // 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();
        }
    }
示例#2
0
 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;
 }
示例#3
0
    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;
        }
    }
示例#4
0
    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());
        }
    }
示例#5
0
    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);
        }
    }