Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        //update playerinfo
        characterInfo.info_update();
        status_bar.changeHealth((characterInfo.current_hp / characterInfo.hp));
        status_bar.changeShield((characterInfo.currentPersonalShield / characterInfo.personalShield));
        status_bar.changeThrow((shootSpeed / 50f));


        if (characterInfo.died)
        {
            targetSpeed  = 0;
            currentSpeed = 0;
            player_animator.SetBool("died", true);
        }
        else
        {
            player_animator.SetBool("died", false);
            if (playerPhysics.movementStopped)
            {
                targetSpeed  = 0;
                currentSpeed = 0;
            }

            targetSpeed  = Input.GetAxisRaw("Horizontal") * speed;
            currentSpeed = incrementTowards(currentSpeed, targetSpeed, acceleration);
            player_animator.SetFloat("Run", Mathf.Abs(currentSpeed));

            //rotation
            if (currentSpeed < 0)
            {
                if (mySpriteRenderer != null)
                {
                    // flip the sprite
                    mySpriteRenderer.flipX = true;
                    weaponSyetem.fire_point_flip(true);
                    characterInfo.change_facing_direction(true); // record charater facing info
                }
            }
            else if (currentSpeed > 0)
            {
                if (mySpriteRenderer != null)
                {
                    // flip the sprite
                    mySpriteRenderer.flipX = false;
                    weaponSyetem.fire_point_flip(false);
                    characterInfo.change_facing_direction(false);// record charater facing info
                }
            }

            //Jump
            if (playerPhysics.grounded)
            {
                amountToMove.y = 0;
                if (Input.GetButtonDown("Jump"))
                {
                    amountToMove.y = jumpHeightCurrent;
                    player_animator.SetBool("Is_Jump", true);

                    //cancel all active weapon
                }
                else
                {
                    player_animator.SetBool("Is_Jump", false);
                }
            }
        }



        //hold the ball
        if (playerPhysics.holdBall)
        {
            weaponSyetem.force_to_Stop_Weapon();// stop all weapons.
            jumpHeightCurrent = weightedJump;
            ballTag.GetComponent <Renderer>().enabled = true;

            if (Input.GetMouseButtonDown(0))
            {
                powerUpThrow = true;
            }
            else if (((Input.GetMouseButtonUp(0)) && shootSpeed != 0) || characterInfo.hurted)
            {
                playerPhysics.holdBall = false;
                powerUpThrow           = false;

                Vector3 worldMousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                Vector2 direction     = (Vector2)((worldMousePos - transform.position));

                //if player is hurt, force to throw
                if (characterInfo.hurted)
                {
                    direction = new Vector2(0f, 1f);
                }
                direction.Normalize();

                //throw ball
                gameManagor.inGameBall = Instantiate(gameManagor.ballPrefab, transform.position + (Vector3)(direction * 0.5f), Quaternion.identity);
                gameManagor.ballExist  = true;
                gameManagor.ballHolder = this.gameObject;


                if (playerPhysics.acquireCooldown <= 0f)
                {
                    playerPhysics.acquireCooldown = 1.5f;
                }


                if (gameManagor.inGameBall != null)
                {
                    GameObject ball = gameManagor?.inGameBall;

                    //if player is hurt,using different force
                    if (characterInfo.hurted)
                    {
                        ball.GetComponent <Rigidbody2D>().AddForce(direction * 30, ForceMode2D.Impulse);
                    }
                    ball.GetComponent <Rigidbody2D>().AddForce(direction * shootSpeed, ForceMode2D.Impulse);
                    ball?.GetComponent <BallController>()?.shoot(this.gameObject);
                }
                //reset
                shootSpeed = 0f;
            }
        }
        else
        {
            jumpHeightCurrent = lessWeightJump;
            ballTag.GetComponent <Renderer>().enabled = false;
            //attack
            if (Input.GetMouseButtonDown(0))
            {
                if (!weaponSyetem.fire) // if laser is still firing
                {
                    weaponSyetem.fire            = true;
                    weaponSyetem.fire_buttonHold = true;
                }
            }
            else if (Input.GetMouseButtonDown(1))
            {
                weaponSyetem.switch_Weapon(); //switch weapon
            }
            else if (Input.GetMouseButtonUp(0))
            {
                weaponSyetem.fire_buttonHold = false;
            }
        }

        //hold the space key will gain more power when throw the ball
        if (powerUpThrow)
        {
            shootSpeed += shootPower * Time.deltaTime;
            if (shootSpeed > 50f)
            {
                shootSpeed = 50f;
            }
        }

        //gravity
        amountToMove.x  = currentSpeed;
        amountToMove.y -= gravity * Time.deltaTime;

        //impulse after a scroe
        if (impulseDuration > 0)
        {
            amountToMove.x  += impulseDircetion.x * impulsePower;
            impulseDuration -= Time.deltaTime;
        }


        //move
        playerPhysics.Move(amountToMove * Time.deltaTime);
    }
Exemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        //update character info
        characterInfo.info_update();

        //if character is hurt, then character cant be controlled
        if (characterInfo.died)
        {
            targetSpeed  = 0;
            currentSpeed = 0;
            player_animator.SetBool("died", true);
        }
        else
        {
            player_animator.SetBool("died", false);
            if (playerPhysics.movementStopped)
            {
                targetSpeed  = 0;
                currentSpeed = 0;
            }

            Vector3 ball_current_position = new Vector3();
            if (gameManagor.inGameBall != null)
            {
                GameObject ball = gameManagor?.inGameBall;
                ball_current_position = ball.transform.position;
                if ((ball_current_position.x - this.transform.position.x) < 0)
                {
                    targetSpeed = (-1) * speed;
                }
                else
                {
                    targetSpeed = 1 * speed;
                }
            }
            else //if player has the ball
            {
                GameObject player = gameManagor.player1;
                Vector3    player_current_position = player.transform.position;
                if (player_current_position.x - this.transform.position.x < 0)
                {
                    targetSpeed = (-1) * speed;
                }
                else
                {
                    targetSpeed = 1 * speed;
                }
            }



            currentSpeed = incrementTowards(currentSpeed, targetSpeed, acceleration);
            player_animator.SetFloat("Run", Mathf.Abs(currentSpeed));

            //rotation
            if (currentSpeed < 0)
            {
                if (mySpriteRenderer != null)
                {
                    // flip the sprite
                    mySpriteRenderer.flipX = true;
                    weaponSyetem.fire_point_flip(true);
                }
            }
            else if (currentSpeed > 0)
            {
                if (mySpriteRenderer != null)
                {
                    // flip the sprite
                    mySpriteRenderer.flipX = false;
                    weaponSyetem.fire_point_flip(false);
                }
            }

            //Jump
            if (playerPhysics.grounded)
            {
                bool jump = false;

                GameObject player = gameManagor.player1;
                Vector3    player_current_position = player.transform.position;
                if (player_current_position.y - this.transform.position.y > 5)
                {
                    jump = true;
                }
                else
                {
                    jump = false;
                }

                amountToMove.y = 0;
                if (jump)
                {
                    amountToMove.y = jumpHeightCurrent;
                    player_animator.SetBool("Is_Jump", true);

                    //cancel all active weapon
                }
                else
                {
                    player_animator.SetBool("Is_Jump", false);
                }
            }
        }

        //hold the ball
        if (playerPhysics.holdBall)
        {
            jumpHeightCurrent = weightedJump;
            ballTag.GetComponent <Renderer>().enabled = true;

            //random throw time
            bool throwBall   = false;
            int  randomThrow = Random.Range(0, 1000);

            if (randomThrow < 10 || characterInfo.hurted)
            {
                throwBall = true;
            }
            else
            {
                throwBall = false;
            }

            //bool throw a ball
            if (!throwBall)
            {
                powerUpThrow = true;
            }
            else if (throwBall && shootSpeed != 0)
            {
                playerPhysics.holdBall = false;
                powerUpThrow           = false;

                Vector2 direction = new Vector2(Random.Range(-1f, 1f), Random.Range(0f, 1f));

                //if player is hurt, force to throw
                if (characterInfo.hurted)
                {
                    direction = new Vector2(0f, 1f);
                }

                direction.Normalize();

                //throw the ball
                gameManagor.inGameBall = Instantiate(gameManagor.ballPrefab, transform.position + (Vector3)(direction * 0.5f), Quaternion.identity);
                gameManagor.ballExist  = true;
                gameManagor.ballHolder = this.gameObject;


                if (playerPhysics.acquireCooldown <= 0f)
                {
                    playerPhysics.acquireCooldown = 1.5f;
                }


                if (gameManagor.inGameBall != null)
                {
                    GameObject ball = gameManagor?.inGameBall;

                    //if player is hurt
                    if (characterInfo.hurted)
                    {
                        ball.GetComponent <Rigidbody2D>().AddForce(direction * 30, ForceMode2D.Impulse);
                    }
                    else
                    {
                        ball.GetComponent <Rigidbody2D>().AddForce(direction * shootSpeed, ForceMode2D.Impulse);
                    }

                    ball?.GetComponent <BallController>()?.shoot(this.gameObject);
                }
                //reset
                shootSpeed = 0f;
            }
        }
        else
        {
            jumpHeightCurrent = lessWeightJump;
            ballTag.GetComponent <Renderer>().enabled = false;

            //attack player

            if (gameManagor.inGameBall == null)
            {
                bot_attack_player();

                /*if (Input.GetMouseButtonDown(0))
                 * {
                 *  if(!weaponSyetem.fire){ // if laser is still firing
                 *      weaponSyetem.fire = true;
                 *      weaponSyetem.fire_buttonHold = true;
                 *  }
                 * }
                 * else if(Input.GetMouseButtonDown(1)){
                 * weaponSyetem.switch_Weapon();
                 * }
                 * else if(Input.GetMouseButtonUp(0)){
                 *  weaponSyetem.fire_buttonHold = false;
                 * } */
            }
        }

        if (powerUpThrow)
        {
            shootSpeed += shootPower * Time.deltaTime;
            if (shootSpeed > 50f)
            {
                shootSpeed = 50f;
            }
        }

        //gravity
        amountToMove.x  = currentSpeed;
        amountToMove.y -= gravity * Time.deltaTime;

        //impulse after a scroe
        if (impulseDuration > 0)
        {
            amountToMove.x  += impulseDircetion.x * impulsePower;
            impulseDuration -= Time.deltaTime;
        }


        //move
        playerPhysics.Move(amountToMove * Time.deltaTime);
    }