Example #1
0
    void OnCollisionEnter(Collision col)
    {
        if (col.gameObject.tag == "Powerup")
        {
            if (powerup == powerups.none)
            {
                powerUsed = false;
                int pickupNumber = col.gameObject.GetComponent <PowerupScript>().powerupNumber;

                switch (pickupNumber)
                {
                case 1: powerup = powerups.shield; break;

                case 2: powerup = powerups.steel; break;

                case 3: powerup = powerups.hole; break;

                case 4: powerup = powerups.ball; break;

                default: powerup = powerups.shield; break;
                }
            }
            Destroy(col.gameObject);
        }
    }
Example #2
0
    void Start()
    {
        spawnCords();
        collider = gameObject.GetComponent <CircleCollider2D>();
        powerups = GameObject.Find("Game Wrapper").GetComponent <powerups>();
        animator = this.GetComponent <Animator>();
        int randomizer = random.Next(1, 4);

        //renderer.sprite =
        switch (randomizer)
        {
        case 1:
            type = 1;
            animator.runtimeAnimatorController = nukeAnim;
            break;

        case 2:
            type = 2;
            animator.runtimeAnimatorController = slowTimeAnim;
            break;

        case 3:
            type = 3;
            animator.runtimeAnimatorController = shieldAnim;
            break;
        }
    }
Example #3
0
 void slowDown()
 {
     rb.velocity   /= 4;
     currentPowerup = powerups.none;
     GetComponent <Ball>().currentPowerup         = powerups.none;
     transform.GetComponent <Renderer>().material = GetComponent <Ball>().originalMaterial;
 }
Example #4
0
 void speedUp()
 {
     rb.velocity   *= 2;
     currentPowerup = powerups.none;
     GetComponent <Ball>().currentPowerup         = powerups.none;
     transform.GetComponent <Renderer>().material = GetComponent <Ball>().originalMaterial;
 }
Example #5
0
    void Spawn()
    {
        GetComponent <MeshRenderer>().enabled = true;

        while (!alive)
        {
            if (!spawnShockwave && !spawnSlowDown && !spawnSpeedUp && !spawnBomb && !spawnSlime && !spawnBowlingBall && !spawnMarble && !spawnGhost)
            {
                GetComponent <Renderer>().material.color = new Color(0, 0, 0);
                alive = true;
                return;
            }
            powerup = (powerups)System.Enum.Parse(typeof(powerups), Random.Range(1, 9).ToString());
            switch (powerup)
            {
            case powerups.speedUp:
                alive = spawnSpeedUp;
                GetComponent <Renderer>().material = speedUp;
                break;

            case powerups.slowDown:
                alive = spawnSlowDown;
                GetComponent <Renderer>().material = slowDown;
                break;

            case powerups.shockwave:
                alive = spawnShockwave;
                GetComponent <Renderer>().material = shockwave;
                break;

            case powerups.bomb:
                alive = spawnBomb;
                GetComponent <Renderer>().material = bomb;
                break;

            case powerups.slime:
                alive = spawnSlime;
                GetComponent <Renderer>().material = slime;
                break;

            case powerups.bowlingBall:
                alive = spawnBowlingBall;
                GetComponent <Renderer>().material = bowlingBall;
                break;

            case powerups.marble:
                alive = spawnMarble;
                GetComponent <Renderer>().material = marble;
                break;

            case powerups.ghost:
                alive = spawnGhost;
                GetComponent <Renderer>().material = ghost;
                break;
            }
        }
    }
Example #6
0
 void shockwave()
 {
     if (!GetComponent <Ball>().grounded)
     {
         rb.velocity    = new Vector3(0, -15, 0);
         shockwaving    = true;
         currentPowerup = powerups.none;
         GetComponent <Ball>().currentPowerup         = powerups.none;
         transform.GetComponent <Renderer>().material = GetComponent <Ball>().originalMaterial;
     }
 }
        //powerupy
        public bool addPowerup(powerups _powerup)
        {
            int cost = powerupCost(_powerup);

            if (cost <= PlayerMoney)
            {
                PlayerMoney -= cost;
                Powerups[(int)_powerup]++;
                return(true);
            }
            return(false);
        }
Example #8
0
    void shockwave()
    {
        //if (shockwaveFirst)
        //{
        //    if (GetComponent<Ball>().grounded)
        //    {
        //        rb.AddForce(movementDirection.transform.up * jumpPower, ForceMode.Acceleration);
        //        GetComponent<Ball>().grounded = false;
        //        return;
        //    }
        //    shockwaveFirst = false;
        //}

        //if (!shockwaveFirst && shockwaveTimer < shockwaveUseDelay)
        //{
        //    shockwaveTimer += Time.deltaTime;
        //}

        //^ Jump

        //if (GetComponent<Ball>().grounded)
        //{
        //    rb.AddForce(movementDirection.transform.up * jumpPower, ForceMode.Acceleration);
        //    shockwaveFirst = true;
        //    GetComponent<Ball>().grounded = false;
        //    return;
        //}

        //if (transform.position.y <= 0)
        //{
        //    return;
        //}

        //if (!shockwaveFirst && shockwaveTimer >= shockwaveUseDelay)
        {
            if (!GetComponent <Ball>().grounded)
            {
                rb.velocity = new Vector3(0, -15, 0);
                shockwaving = true;
                //shockwaveFirst = true;
                currentPowerup = powerups.none;
                GetComponent <Ball>().currentPowerup         = powerups.none;
                transform.GetComponent <Renderer>().material = GetComponent <Ball>().originalMaterial;
            }
            //shockwaveFirst = true;
            //shockwaveTimer = 0;
        }
    }
Example #9
0
    void ManageShield()
    {
        currentShieldCooldown -= Time.deltaTime;
        if (currentShieldCooldown < 0 && shield.GetComponent <BoxCollider>().enabled == true)
        {
            shield.GetComponent <BoxCollider>().enabled  = false;
            shield.GetComponent <MeshRenderer>().enabled = false;
            powerup   = powerups.none;
            powerUsed = false;
        }

        if (currentShieldCooldown > 0 && shield.GetComponent <BoxCollider>().enabled == false)
        {
            shield.GetComponent <BoxCollider>().enabled  = true;
            shield.GetComponent <MeshRenderer>().enabled = true;
        }
    }
Example #10
0
    void ManageHole()
    {
        currentHoleCooldown -= Time.deltaTime;
        if (currentHoleCooldown < 0 && hole.GetComponent <SphereCollider>().enabled == true)
        {
            hole.GetComponent <SphereCollider>().enabled = false;
            hole.GetComponent <MeshRenderer>().enabled   = false;
            powerup   = powerups.none;
            powerUsed = false;
        }

        if (currentHoleCooldown > 0 && hole.GetComponent <SphereCollider>().enabled == false)
        {
            hole.GetComponent <SphereCollider>().enabled = true;
            hole.GetComponent <MeshRenderer>().enabled   = true;
        }
    }
Example #11
0
    void ManageSteel()
    {
        currentSteelCooldown -= Time.deltaTime;
        if (currentSteelCooldown < 0 && steel.GetComponent <CapsuleCollider>().enabled == true)
        {
            steel.GetComponent <CapsuleCollider>().enabled = false;
            steel.GetComponent <MeshRenderer>().enabled    = false;
            powerup = powerups.none;
            thisRigid.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationZ;
            powerUsed             = false;
        }

        if (currentSteelCooldown > 0 && steel.GetComponent <CapsuleCollider>().enabled == false)
        {
            steel.GetComponent <CapsuleCollider>().enabled = true;
            steel.GetComponent <MeshRenderer>().enabled    = true;
            thisRigid.constraints = RigidbodyConstraints.FreezePosition | RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationZ;
        }
    }
Example #12
0
    void Start()
    {
        roundManager = GameObject.Find("GameManager").GetComponent <RoundManager>();
        //powerUp = GameObject.Find("PowerUp").GetComponent<PowerUp>();
        currentSpawnState = state.Reset;
        nextPowerUp       = powerups.Shield;
        //powerUp = GameObject.Find("PowerUp").GetComponent<PowerUp>();
        shield  = GameObject.Find("ShieldPickUp").GetComponent <Shield>();
        powerUp = shield;
        //nextPowerUpPosition = Camera.main.ScreenToWorldPoint(topRight);
        //transform.position = nextPowerUpPosition;

        //powerUpPositions = new Vector3[4];
        //powerUpPositions[0] = topRight;
        //powerUpPositions[1] = topLeft;
        //powerUpPositions[2] = bottomRight;
        //powerUpPositions[3] = bottomLeft;

        //PowerUpMultiplier();
    }
Example #13
0
    private void OnTriggerEnter(Collider other)
    {
        if (!is_active)
        {
            if (other.CompareTag("Player"))
            {
                is_active = true;
                powerups item = RandomEnumValue <powerups>();
                Debug.Log(controller);

                switch (item)
                {
                case powerups.AddScore:
                    controller.GetScore(UnityEngine.Random.Range(1, 5));
                    break;

                case powerups.AddLife:
                    other.GetComponent <player_controller>().GetLife(1);
                    break;

                case powerups.AddBullet:
                    for (int i = 0; i < 360; i += 15)
                    {
                        Transform clone
                            = Instantiate(shot,
                                          transform.position,
                                          Quaternion.identity);
                        clone.transform.Rotate(Vector3.up * i);
                        clone.GetComponent <player_bullet_controller>()
                        .controller = controller;
                    }
                    break;
                }

                pick_up.Play();
                GetComponent <Renderer>().enabled = false;

                Destroy(gameObject, 2.0f);
            }
        }
    }
Example #14
0
    void Awake()
    {
        grounded       = false;
        isAlive        = true;
        currentPowerup = powerups.none;
        powerupToggle  = false;

        if (GetComponent <PlayerMovement>() != null)
        {
            originalSpeed     = GetComponent <PlayerMovement>().speed;
            originalDashForce = GetComponent <PlayerMovement>().dashForce;
        }
        else
        {
            originalSpeed     = GetComponent <AI>().speed;
            originalDashForce = 1;
        }


        originalMass  = GetComponent <Rigidbody>().mass;
        originalScale = transform.localScale;
    }
    void FixedUpdate()
    {
        if (Input.GetButton("Fire1"))
        {
            FireBolt();
        }
        else
        {
            energyBolt.positionCount = 0;
        }

        if (Input.GetButton("Fire2") && !powerUsed)
        {
            switch (powerup)
            {
            case powerups.none: break;

            case powerups.shield: currentShieldCooldown = shieldCooldown; PowerupTimerUI.sprite = shieldUI; PowerupTimerBG.sprite = shieldBG; PowerupTimerUI.enabled = true; PowerupTimerBG.enabled = true; powerUsed = true;  break;

            case powerups.steel: currentSteelCooldown = steelCooldown; PowerupTimerUI.sprite = steelUI; PowerupTimerBG.sprite = steelBG; PowerupTimerUI.enabled = true; PowerupTimerBG.enabled = true; powerUsed = true; break;

            case powerups.hole: currentHoleCooldown = holeCooldown; PowerupTimerUI.sprite = holeUI; PowerupTimerBG.sprite = holeBG; PowerupTimerUI.enabled = true; PowerupTimerBG.enabled = true; powerUsed = true; break;

            case powerups.ball: Instantiate(ball, ballSpawn.position, ballSpawn.rotation); powerup = powerups.none; powerUsed = false; break;

            default: break;
            }
        }
    }
Example #16
0
    void UsePowerup()
    {
        if (powerup != powerups.none && !powerUsed)
        {
            switch (powerup)
            {
            case powerups.none: break;

            case powerups.shield: currentShieldCooldown = shieldCooldown;  powerUsed = true; break;

            case powerups.steel: currentSteelCooldown = steelCooldown;  powerUsed = true; break;

            case powerups.hole: currentHoleCooldown = holeCooldown;  powerUsed = true; break;

            case powerups.ball: Instantiate(ball, ballSpawn.position, ballSpawn.rotation); powerup = powerups.none; powerUsed = false; break;

            default: break;
            }
        }
    }
Example #17
0
    void Update()
    {
        dashCurrentCooldown  -= Time.deltaTime;
        currentGhostDuration -= Time.deltaTime;
        disableDuration      -= Time.deltaTime;

        if (disableDuration <= 0)
        {
            movementDisabled = false;
        }
        else
        {
            movementDisabled = true;
        }

        if (currentGhostDuration <= 0 && ghosting)
        {
            ghosting       = false;
            rb.isKinematic = false;
            GetComponent <SphereCollider>().enabled = true;
            Color playerColor = GetComponent <Renderer>().material.color;
            currentPowerup = powerups.none;
            GetComponent <Ball>().currentPowerup = powerups.none;
            GetComponent <Renderer>().material   = GetComponent <Ball>().originalMaterial;
        }

        movementDirection.transform.eulerAngles = new Vector3(0, camera.transform.eulerAngles.y, 0);

        if (Input.GetKeyDown(pause))
        {
            if (objScript.paused)
            {
                if (!pauseReady)
                {
                    pauseReady = true;
                }
                else
                {
                    pauseReady = false;
                }
            }
            else
            {
                objScript.pause();
            }
        }

        if (!objScript.paused)
        {
            if (Input.GetKey(special))
            {
                currentPowerup = GetComponent <Ball>().currentPowerup;
                switch (currentPowerup)
                {
                case powerups.speedUp: speedUp(); break;

                case powerups.slowDown: slowDown(); break;

                case powerups.shockwave: shockwave(); break;

                case powerups.slime: slime(); break;

                case powerups.ghost: ghost(); break;
                }
            }

            if (Input.GetKeyUp(special))
            {
                currentPowerup = GetComponent <Ball>().currentPowerup;
                switch (currentPowerup)
                {
                case powerups.slime: slime(); break;
                }
            }

            Vector2 movementAxes = Vector2.zero;
            if (!controllerMovement)
            {
                if (Input.GetKey(moveUp))
                {
                    movementAxes += new Vector2(1, 0);
                }
                if (Input.GetKey(moveDown))
                {
                    movementAxes -= new Vector2(1, 0);
                }
                if (Input.GetKey(moveLeft))
                {
                    movementAxes -= new Vector2(0, 1);
                }
                if (Input.GetKey(moveRight))
                {
                    movementAxes += new Vector2(0, 1);
                }
            }
            else
            {
                Debug.Log(axisH);
                Debug.Log(axisV);
                if (Mathf.Abs(Input.GetAxis(axisV)) > 0.25)
                {
                    movementAxes -= new Vector2(Input.GetAxis(axisV), 0);
                }
                if (Mathf.Abs(Input.GetAxis(axisH)) > 0.25)
                {
                    movementAxes += new Vector2(0, Input.GetAxis(axisH));
                }
            }

            if (Input.GetKeyDown(dash) && dashCurrentCooldown <= 0 && !movementDisabled)
            {
                dashCurrentCooldown = dashCooldown;
                rb.AddForce(movementAxes.x * movementDirection.transform.forward * dashForce, ForceMode.Acceleration);
                rb.AddForce(movementAxes.y * movementDirection.transform.right * dashForce, ForceMode.Acceleration);
            }

            if (GetComponent <Ball>().grounded)
            {
                if (shockwaving)
                {
                    shockwaving = false;
                    GetComponent <AudioSource>().clip = shockwaveSound;
                    GetComponent <AudioSource>().Play();
                    Instantiate(shockwaveParticle, transform.position - new Vector3(0, -0.5f, 0), Quaternion.identity);
                    foreach (GameObject player in objScript.players)
                    {
                        if (player != gameObject)
                        {
                            if (Vector3.Distance(transform.position, player.transform.position) < shockwaveRange)
                            {
                                player.GetComponent <Rigidbody>().AddForce(-(transform.position - player.transform.position).normalized / Vector3.Distance(transform.position, player.transform.position) * shockwaveForce);
                            }
                        }
                    }
                }
                else if (!movementDisabled)
                {
                    rb.AddForce(movementAxes.x * movementDirection.transform.forward * speed * Time.deltaTime, ForceMode.Acceleration);
                    rb.AddForce(movementAxes.y * movementDirection.transform.right * speed * Time.deltaTime, ForceMode.Acceleration);
                }
                if (Input.GetKeyDown(jump))
                {
                    rb.AddForce(movementDirection.transform.up * jumpPower, ForceMode.Acceleration);
                    GetComponent <Ball>().grounded = false;
                }
            }
            else if (!movementDisabled)
            {
                rb.AddForce(movementAxes.x * movementDirection.transform.forward * speed * Time.deltaTime / airborneSpeedDivider, ForceMode.Acceleration);
                rb.AddForce(movementAxes.y * movementDirection.transform.right * speed * Time.deltaTime / airborneSpeedDivider, ForceMode.Acceleration);
            }

            //if (GetComponent<Ball>().grounded)
            rb.velocity = new Vector3(Mathf.Clamp(rb.velocity.x, -maxSpeed, maxSpeed), Mathf.Clamp(rb.velocity.y, -maxSpeed, maxSpeed), Mathf.Clamp(rb.velocity.z, -maxSpeed, maxSpeed));
        }
    }
Example #18
0
 // Start is called before the first frame update
 void Start()
 {
     originalScoreTextSize = scoreText.transform.localScale;
     powerups  = gameObject.GetComponent <powerups>();
     gameScore = 0;
 }
Example #19
0
    void Update()
    {
        if (transform.position.y < -6f)
        {
            isAlive = false;
            if (GetComponent <PlayerMovement>() != null)
            {
                GetComponent <PlayerMovement>().enabled = false;
            }
            else if (GetComponent <AI>() != null)
            {
                GetComponent <AI>().enabled = false;
            }
        }

        currentDuration -= Time.deltaTime;

        if (currentPowerup == powerups.bowlingBall)
        {
            if (!powerupToggle)
            {
                powerupToggle   = true;
                currentDuration = bowlingBallDuration;

                if (GetComponent <PlayerMovement>() != null)
                {
                    GetComponent <PlayerMovement>().speed     *= bowlingBallSpeed;
                    GetComponent <PlayerMovement>().dashForce *= bowlingBallSpeed;
                }
                else
                {
                    GetComponent <AI>().speed *= bowlingBallSpeed;
                }

                GetComponent <Rigidbody>().mass = bowlingBallMass;
                transform.localScale           *= bowlingBallScale;
            }
            else if (currentDuration <= 0)
            {
                currentPowerup = powerups.none;
                powerupToggle  = false;

                GetComponent <Renderer>().material = originalMaterial;
                if (GetComponent <PlayerMovement>() != null)
                {
                    GetComponent <PlayerMovement>().speed     = originalSpeed;
                    GetComponent <PlayerMovement>().dashForce = originalDashForce;
                }
                else
                {
                    GetComponent <AI>().speed = originalSpeed;
                }

                GetComponent <Rigidbody>().mass = originalMass;
                transform.localScale            = originalScale;
            }
        }
        else if (currentPowerup == powerups.marble)
        {
            if (!powerupToggle)
            {
                powerupToggle   = true;
                currentDuration = marbleDuration;

                if (GetComponent <PlayerMovement>() != null)
                {
                    GetComponent <PlayerMovement>().speed     *= marbleSpeed;
                    GetComponent <PlayerMovement>().dashForce *= marbleSpeed;
                }
                else
                {
                    GetComponent <AI>().speed *= marbleSpeed;
                }

                GetComponent <Rigidbody>().mass = marbleMass;
                transform.localScale           *= marbleScale;
            }
            else if (currentDuration <= 0)
            {
                currentPowerup = powerups.none;
                powerupToggle  = false;

                GetComponent <Renderer>().material = originalMaterial;
                if (GetComponent <PlayerMovement>() != null)
                {
                    GetComponent <PlayerMovement>().speed     = originalSpeed;
                    GetComponent <PlayerMovement>().dashForce = originalDashForce;
                }
                else
                {
                    GetComponent <AI>().speed = originalSpeed;
                }

                GetComponent <Rigidbody>().mass = originalMass;
                transform.localScale            = originalScale;
            }
        }
    }
Example #20
0
 public int powerupCost(powerups _powerup)
 {
     return((int)(0.2 * ShipInfo.ShipValue));
 }
Example #21
0
    //if (Input.GetKey(moveUp))
    //   movementAxes += new Vector2(1, 0);
    //if (Input.GetKey(moveDown))
    //   movementAxes -= new Vector2(1, 0);
    //if (Input.GetKey(moveLeft))
    //   movementAxes -= new Vector2(0, 1);
    //if (Input.GetKey(moveRight))
    //   movementAxes += new Vector2(0, 1);
    void Update()
    {
        dashCurrentCooldown -= Time.deltaTime;

        //if (!shockwaveFirst && shockwaveTimer < shockwaveUseDelay)
        //{
        //    shockwaveTimer += Time.deltaTime;
        // * Time.deltaTime
        //}
        if (GetComponent <Ball>().grounded)
        {
            shockwaveFirst = true;
        }
        //powerup bools
        if (sliming)
        {
            if (GetComponent <Ball>().currentPowerup == powerups.none)
            {
                GetComponent <SlimeTrail>().resetSlime();
                GetComponent <SlimeTrail>().enabled = false;
                sliming = false;
            }
        }

        if (ghosting)
        {
            currentGhostDuration -= Time.deltaTime;
            if (currentGhostDuration <= 0)
            {
                //timeGhosted = 0;
                ghosting       = false;
                rb.isKinematic = false;
                GetComponent <SphereCollider>().enabled = true;
                GetComponent <Ball>().currentPowerup    = powerups.none;
                GetComponent <Renderer>().material      = GetComponent <Ball>().originalMaterial;
            }
        }

        if (shockwaving)
        {
            shockwaving = false;
            GetComponent <AudioSource>().clip = shockwaveSound;
            GetComponent <AudioSource>().Play();
            Instantiate(shockwaveParticle, transform.position - new Vector3(0, -0.5f, 0), Quaternion.identity);
            foreach (GameObject player in objScript.players)
            {
                if (player != gameObject)
                {
                    if (Vector3.Distance(transform.position, player.transform.position) < shockwaveRange)
                    {
                        player.GetComponent <Rigidbody>().AddForce(-(transform.position - player.transform.position).normalized / Vector3.Distance(transform.position, player.transform.position) * shockwaveForce * Time.deltaTime);
                    }
                }
            }
        }

        //

        transform.GetChild(0).eulerAngles = Vector3.zero;
        closestTarget = null;
        float targetDistance = maxTargetDistance;

        for (int i = objScript.players.Count - 1; i >= 0; i--)
        {
            if (Vector3.Distance(transform.position, objScript.players[i].transform.position) < targetDistance && objScript.players[i].GetComponent <PlayerMovement>() != null)
            {
                targetDistance = Vector3.Distance(transform.position, objScript.players[i].transform.position);
                if (objScript.players[i].GetComponent <Ball>().grounded)
                {
                    closestTarget = objScript.players[i];
                }
            }
        }
        if (closestTarget == null)
        {
            goForplayer = true;
            if (GetComponent <Ball>().currentPowerup == powerups.none)
            {
                //bool goForplayer = true;
                for (int i = objScript.powerups.Count - 1; i >= 0; i--)
                {
                    if (Vector3.Distance(transform.position, objScript.powerups[i].transform.position) < targetDistance && objScript.powerups[i].GetComponent <Powerup>().alive)
                    { //Powerup.cs changed to make alive bool public
                        targetDistance = Vector3.Distance(transform.position, objScript.powerups[i].transform.position);
                        closestTarget  = objScript.powerups[i];
                        goForplayer    = false;
                    }
                }
            }
            if (goForplayer)
            {
                for (int i = objScript.players.Count - 1; i >= 0; i--)
                {
                    if (Vector3.Distance(transform.position, objScript.players[i].transform.position) < targetDistance && objScript.players[i] != gameObject)
                    {
                        targetDistance = Vector3.Distance(transform.position, objScript.players[i].transform.position);
                        closestTarget  = objScript.players[i];
                    }
                }
            }
        }
        //use dash
        if (closestTarget != null)
        {
            if (Vector3.Distance(transform.position, closestTarget.transform.position) < dashFurthestRange && Vector3.Distance(transform.position, closestTarget.transform.position) > dashClosestRange && dashCurrentCooldown <= 0 && goForplayer)
            {
                rb.velocity        *= dashSpeed;
                dashCurrentCooldown = dashCooldown;
            }
        }
        //use powerup

        //if (GetComponent<Ball>().currentPowerup == powerups.none)
        //{
        //    for (int i = objScript.powerups.Count - 1; i >= 0; i--)
        //    {
        //        if (Vector3.Distance(transform.position, objScript.powerups[i].transform.position) < targetDistance && objScript.powerups[i].GetComponent<Powerup>().alive)
        //        { //Powerup.cs changed to make alive bool public
        //            targetDistance = Vector3.Distance(transform.position, objScript.powerups[i].transform.position);
        //            closestTarget = objScript.powerups[i];
        //        }
        //    }
        //}

        //finite state machines
        if (closestTarget != null)
        {
            if (Vector3.Distance(transform.position, closestTarget.transform.position) < powerUpRange)
            {
                currentPowerup = GetComponent <Ball>().currentPowerup;
                switch (currentPowerup)
                {
                case powerups.none:
                {
                    runAway = false;
                    transform.GetComponent <Renderer>().material = GetComponent <Ball>().originalMaterial;
                    break;
                }

                case powerups.speedUp: speedUp(); break;

                case powerups.slowDown: slowDown(); break;

                case powerups.bowlingBall:
                {
                    if (Vector3.Distance(transform.position, closestTarget.transform.position) < bowlingBallDashRange && goForplayer)
                    {
                        if (dashCurrentCooldown <= 0)
                        {
                            rb.velocity        *= dashSpeed;
                            dashCurrentCooldown = dashCooldown;
                        }
                    }
                    break;
                }

                case powerups.marble:
                {
                    if (goForplayer && Vector3.Distance(transform.position, closestTarget.transform.position) < marbleRunawayRange)
                    {
                        runAway = true;
                        if (dashCurrentCooldown <= 0)
                        {
                            rb.velocity        *= dashSpeed;
                            dashCurrentCooldown = dashCooldown;
                        }
                    }
                    else
                    {
                        runAway = false;
                    }
                    break;
                }

                case powerups.shockwave:
                {
                    if (Vector3.Distance(transform.position, closestTarget.transform.position) < useShockwaveJumpRange)
                    {
                        if (GetComponent <Ball>().grounded)
                        {
                            rb.AddForce(movementDirection.transform.up * jumpPower * Time.deltaTime, ForceMode.Acceleration);
                            GetComponent <Ball>().grounded = false;
                            break;
                        }
                    }
                    if (Vector3.Distance(transform.position, closestTarget.transform.position) < useShockwaveRange)
                    {
                        shockwave();
                    }
                    break;
                }

                case powerups.slime:
                {
                    if (Vector3.Distance(transform.position, closestTarget.transform.position) < useSlimeRange)
                    {
                        slime();
                    }
                    break;
                }

                case powerups.ghost:
                {
                    //if pool cue is close to ai
                    if (Vector3.Distance(transform.position, objScript.GetComponent <PoolCues>().poolCue.transform.position) < ghostPoolCueRange)
                    {
                        ghost();
                    }
                    //if another player is close to ai
                    if (Vector3.Distance(transform.position, closestTarget.transform.position) < useGhostRange)
                    {
                        ghost();
                    }
                    break;
                }
                }
            }
        }


        if (!objScript.paused)
        {
            if (closestTarget != null)
            {
                if (Vector3.Distance(transform.position, closestTarget.transform.position) < 0.1f)
                {
                    closestTarget.transform.position = new Vector3(closestTarget.transform.position.x - 1, closestTarget.transform.position.y - 1, closestTarget.transform.position.z - 1);
                }
                if (GetComponent <Ball>().grounded)
                {
                    if (runAway)
                    {
                        rb.AddForce(-Vector3.Normalize(closestTarget.transform.position - transform.position) * speed * Time.deltaTime, ForceMode.Acceleration);
                    }
                    else
                    {
                        rb.AddForce(Vector3.Normalize(closestTarget.transform.position - transform.position) * speed * Time.deltaTime, ForceMode.Acceleration);
                    }
                }
                else
                if (!shockwaveFirst)
                {
                    if (runAway)
                    {
                        rb.AddForce(-Vector3.Normalize(closestTarget.transform.position - transform.position) * speed * Time.deltaTime / airborneSpeedDivider, ForceMode.Acceleration);
                    }
                    else
                    {
                        rb.AddForce(Vector3.Normalize(closestTarget.transform.position - transform.position) * speed * Time.deltaTime / airborneSpeedDivider, ForceMode.Acceleration);
                    }
                }
            }
        }

        rb.velocity = new Vector3(Mathf.Clamp(rb.velocity.x, -maxSpeed, maxSpeed), Mathf.Clamp(rb.velocity.y, -maxSpeed, maxSpeed), Mathf.Clamp(rb.velocity.z, -maxSpeed, maxSpeed));
    }
Example #22
0
	// POWERUP SELECTION


	public void hintSelect(){
		// Selecting hint powerup
		if(!isHintSelected ){
			if(amountChange("_hint",0)){
				PlayerPrefs.SetString("_powerup","Hint");
				buttons[0].image.sprite = sprites_enabled[0];
				isHintSelected = true;

				powerupType = powerups.HINT;
				disableOtherPowerups();
			}
		}
		// Undo hint powerup
		else{
			buttons[0].image.sprite = sprites_disabled[0];
			isHintSelected = false;

			powerupType = powerups.NULL;
			amountCheckMax("_hint",0);
		}

	}
Example #23
0
	public void slowmoSelect(){
		// Selecting slowmo powerup
		if(!isSlowMoSelected){
			if(amountChange("_slowmo",1)){
				PlayerPrefs.SetString("_powerup","SlowTime");
				buttons[1].image.sprite = sprites_enabled[1];
				isSlowMoSelected = true;

				powerupType = powerups.SLOWMO;
				disableOtherPowerups();
			}
		}
		// Undo slowmo powerup
		else{
			buttons[1].image.sprite = sprites_disabled[1];
			isSlowMoSelected = false;

			powerupType = powerups.NULL;
			amountCheckMax("_slowmo",1);
		}


	}
Example #24
0
	public void lastForceSelect(){
		// Selecting slowmo powerup
		if(!isLastForceSelected){
			if(amountChange("_lastforce",2)){
				PlayerPrefs.SetString("_powerup","LastForce");
				buttons[2].image.sprite = sprites_enabled[2];
				isLastForceSelected = true;

				powerupType = powerups.LASTFORCE;
				disableOtherPowerups();
			}
		}
		// Undo slowmo powerup
		else{
			buttons[2].image.sprite = sprites_disabled[2];
			isLastForceSelected = false;

			powerupType = powerups.NULL;
			amountCheckMax("_lastforce",2);
		}

	}
Example #25
0
    //void Update ()
    //   {
    //	//print(currentSpawnState);
    //       if (roundManager.isPlaying)
    //       {
    //		switch (currentSpawnState)
    //		{
    //			case state.Idle:
    //				coolDown -= Time.deltaTime;
    //				if (powerUp.currentState != PowerUp.state.PickedUp)
    //				{
    //					if (coolDown <= 0f)
    //					{
    //						PlacePowerUp();
    //						currentSpawnState = state.Spawned;
    //					}
    //				}
    //			    break;
    //			case state.Spawned:
    //				coolDown = 0f;
    //				powerUp.Shield();
    //				//powerUp.currentState = PowerUp.state.OnField;
    //				currentSpawnState = state.Reset;
    //                   break;
    //			case state.Reset:
    //				coolDown = Random.Range(coolDownMin, coolDownMax);
    //				currentSpawnState = state.Idle;
    //                   break;
    //			default:
    //				print("CurrentSpawnState is set to Default, this should not happen");
    //				break;
    //		}
    //       }
    //}

    void PickRandomPowerup()
    {
        nextPowerUp = (powerups)Random.Range(0, 3);
    }