Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        weaponScript = weaponSwitching.weaponScript;


        //Bool defenition


        isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);

        if (previousPos == gameObject.transform.position)
        {
            isStaying = true;
        }
        else
        {
            isStaying = false;
        }

        isRunning = Input.GetKey("left shift");
        if (Input.GetKey("left ctrl") || isStaying)
        {
            isRunning = false;
        }

        previousPos = gameObject.transform.position;


        //Some manipulation


        if (isGrounded && velocity.y < -2f)
        {
            velocity.y = -2f;
        }

        float x = Input.GetAxis("Horizontal");
        float z = Input.GetAxis("Vertical");

        Vector3 move = transform.right * x * inAirMultiplier + transform.forward * z * inAirMultiplier;


        //Moving


        handsAnim.SetBool("Falling", false);
        if (isStaying)
        {
            //StayingAnim
            handsAnim.SetBool("Running", false);
            handsAnim.SetBool("Walking", false);
            handsAnim.SetBool("RunAndGun", false);
        }
        else
        {
            if (isRunning)
            {
                //RunningAnim
                handsAnim.SetBool("Running", true);
            }
            else
            {
                //WalkingAnim
                handsAnim.SetBool("Running", false);
                handsAnim.SetBool("Walking", true);
            }
        }


        //Move
        if (!Input.GetKey("left ctrl") && Input.GetKey("left shift"))
        {
            //Run
            currentSpeed            = runSpeed;
            currentTimeBetweenSteps = timeBetweenSteps_Run;
            if (weaponScript != null)
            {
                weaponScript.recoilMultiplier = 3f;
            }
        }
        else if (!Input.GetKey("left ctrl"))
        {
            //Walk
            currentSpeed            = walkSpeed;
            currentTimeBetweenSteps = timeBetweenSteps_Walk;
            if (weaponScript != null)
            {
                weaponScript.recoilMultiplier = 2f;
            }
        }
        else if (Input.GetKey("left ctrl"))
        {
            //Crouch
            currentSpeed            = crouchSpeed;
            currentTimeBetweenSteps = timeBetweenSteps_Crouch;
            if (weaponScript != null)
            {
                weaponScript.recoilMultiplier = 0.7f;
            }
        }

        if (isStaying && !Input.GetKey("left ctrl"))
        {
            if (weaponScript != null)
            {
                weaponScript.recoilMultiplier = 1f;
            }
        }

        if (!isGrounded)
        {
            if (weaponScript != null)
            {
                weaponScript.recoilMultiplier = 4f;
            }
        }

        controller.Move(move * currentSpeed * Time.deltaTime);

        //Jump
        if (Input.GetKeyDown("space") && isGrounded)
        {
            velocity.y = Mathf.Sqrt(jumpHeight * -2 * gravity);
        }

        if (isGrounded)
        {
            inAirMultiplier = 1f;
        }
        else
        {
            if (inAirMultiplier > minInAirMultiplier)
            {
                inAirMultiplier -= 0.001f;
            }
        }

        //Crouching


        if (Input.GetKeyDown("left ctrl") && transform.localScale != new Vector3(1, 0.4f, 1))
        {
            transform.localScale = new Vector3(1, 0.4f, 1);
            foreach (Transform i in transform)
            {
                i.localScale = new Vector3(1, i.localScale.y * 2.5f, 1);
            }
        }

        else if (!Input.GetKey("left ctrl") && transform.localScale != new Vector3(1, 1, 1))
        {
            if (!Physics.CheckSphere(cellingCheck.position, 0.5f, groundMask))
            {
                gameObject.transform.localScale = new Vector3(1, 1, 1);
                gameObject.transform.position  += new Vector3(0, 1, 0);
                foreach (Transform i in transform)
                {
                    i.localScale = new Vector3(1, i.localScale.y / 2.5f, 1);
                }
            }
        }


        //Other


        velocity.y += gravity * Time.deltaTime;

        controller.Move(velocity * Time.deltaTime);

        StepSoundPlay();
    }
Exemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        int          previousSelectedWeapon = selectedWeapon;
        ReloadScript ammoScript             = GetComponentInChildren <ReloadScript>();

        weaponScript = GetComponentInChildren <UniversalWeaponScript>();
        animator     = gameObject.GetComponent <Animator>();

        if (ammoScript != null)
        {
            if (ammoScript.reloading == false)
            {
                canChange = true;
            }
            else
            {
                canChange = false;
            }
        }


        if (weaponScript != null)
        {
            if (weaponScript.animator.GetCurrentAnimatorStateInfo(0).IsTag("Idle"))
            {
                canChange = true;
            }
            else
            {
                canChange = false;
            }
        }

        else
        {
            if (ammoScript == null)
            {
                canChange = true;
            }
        }

        if (Input.GetAxis("Mouse ScrollWheel") > 0f & (canChange))
        {
            if (selectedWeapon >= transform.childCount - 1)
            {
                selectedWeapon = 0;
            }
            else
            {
                selectedWeapon++;
            }
        }
        if (Input.GetAxis("Mouse ScrollWheel") < 0f & (canChange))
        {
            if (selectedWeapon <= 0)
            {
                selectedWeapon = transform.childCount - 1;
            }
            else
            {
                selectedWeapon--;
            }
        }
        if (previousSelectedWeapon != selectedWeapon)
        {
            SelectWeapon();
        }
        animator.SetBool("RunAndGun", false);

        if (animator.GetBool("Running") && weaponScript != null)
        {
            if (weaponScript.animator.GetCurrentAnimatorStateInfo(0).IsTag("Shoot"))
            {
                animator.SetBool("RunAndGun", true);
            }
        }
    }