void Update()
    {
        state = GamePad.GetState(playerIndex);
        button_a.UpdateValue(state.Buttons.A);

        Vector3 movement = new Vector3(state.ThumbSticks.Left.X, 0f, state.ThumbSticks.Left.Y);

        if (movement != Vector3.zero)
        {
            rb.velocity    = movement * moveSpeed;
            targetRotation = Quaternion.LookRotation(movement);
            render_object.transform.rotation = targetRotation;
        }
        else
        {
            rb.velocity = Vector3.zero;
        }
        anim.SetFloat("speed", movement.magnitude);
        if (can_go_thrown_vines && button_a.state == KEY_STATE.KEY_DOWN)
        {
            going_throw_vines  = true;
            diggingDirection.y = -diggingDirection.y;
        }
        if (going_throw_vines)
        {
            transform.position += diggingDirection * go_up_speed * Time.deltaTime;
            if (Mathf.Sign(diggingDirection.y) == 1f)
            {
                if (transform.position.y >= go_up_distance)
                {
                    transform.position = new Vector3(transform.position.x, go_up_distance, transform.position.z);
                    going_throw_vines  = false;
                }
            }
            else if (Mathf.Sign(diggingDirection.y) == -1f)
            {
                if (transform.position.y <= go_down_distance)
                {
                    transform.position = new Vector3(transform.position.x, go_down_distance, transform.position.z);
                    going_throw_vines  = false;
                }
            }
        }
    }
Пример #2
0
    void Update()
    {
        state = GamePad.GetState(playerIndex);
        button_a.UpdateValue(state.Buttons.A);

        Vector3 movement = new Vector3(state.ThumbSticks.Left.X, 0f, state.ThumbSticks.Left.Y);

        if (movement != Vector3.zero)
        {
            rb.velocity = movement * moveSpeed;
            if (!audioSource.isPlaying)
            {
                audioSource.Play();
            }
            targetRotation = Quaternion.LookRotation(movement);
            render_object.transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, Time.time);
        }
        else
        {
            rb.velocity = Vector3.zero;
        }

        anim.SetFloat("speed", movement.magnitude);

        if ((Input.GetKeyDown(KeyCode.Z) || button_a.state == KEY_STATE.KEY_DOWN))
        {
            if (isInTree)
            {
                currTree.MakeTreeFall();
            }
            else if (can_dig)
            {
                monticulo.SetActive(!monticulo.activeSelf);
                digging          = true;
                underground      = !underground;
                audioSource.clip = underground ? digSFX : walkSFX;
            }
        }

        if (digging)
        {
            transform.position += diggingDirection * diggingSpeed * Time.deltaTime;
            //Is diggin' down
            if (Mathf.Sign(diggingDirection.y) == -1f)
            {
                if (transform.position.y <= dig_down_distance)
                {
                    transform.position = new Vector3(transform.position.x, dig_down_distance, transform.position.z);
                    digging            = false;
                }
            }
            //Is diggin' up
            else if (Mathf.Sign(diggingDirection.y) == 1f)
            {
                if (transform.position.y >= dig_up_distance)
                {
                    transform.position = new Vector3(transform.position.x, dig_up_distance, transform.position.z);
                    digging            = false;
                }
            }
        }

        if (!rock_vibration && (Time.time - time_vibration) >= vibrate_rock_time)
        {
            GamePad.SetVibration(playerIndex, 0.0f, 0f);
            rock_vibration = true;
        }
    }