• Как правильно настроить считывание клавиш?

    @ZeFi Автор вопроса
    если я правильно понимаю, нужно сделать так, чтобы одновременно могли работать несколько состояний, правильно? но касаемо атаки в падении: она не может быть одновременно с обычным падением, потому что анимации разные. я вроде реализовала это только что, но мне кажется, что все равно коряво: я записываю, когда нажимаю на кнопку в отдельную переменную в апдейте и выключаю ее когда персонаж приземляется, и в добавок в методе для анимаци выключаю их в других состояниях и включаю в нужном... (чувствую себя глуповатой):
    Update:
    if (Input.GetMouseButtonDown(0))
            {
                mousedownFall = true;
            }
            if (grounded)
            {
                mousedownFall = false;
            }

    private void UpdateAnimationStates()
        {
            if (state != MovementState.air)
            {
                animator.SetBool("inAirAttack", false);
                animator.SetBool("inAir", false);
            }
    
            switch (state)
            {
                case MovementState.idle:
                    animator.SetBool("IsStanding", true);
                    break;
                case MovementState.walking:
                    animator.SetBool("IsWalking", true);
                    break;
                case MovementState.crouching:
                    animator.SetBool("IsSitting", true);
                    break;
                case MovementState.sprinting:
                    animator.SetBool("IsRunning", true);
                    break;
                case MovementState.air:
                    
                    if (mousedownFall)
                    {
                        animator.SetBool("inAirAttack", true);
                    }
                    if(!mousedownFall)
                        animator.SetBool("inAir", true);
                    break;
    
                default:
                    break;
            }
        }


    касаемо рывка:
    я пыталась сделать так:
    Метод:
    IEnumerator SprintBoost()
        {
            float originalSpeed = sprintSpeed;
            sprintSpeed *= 1.1f; 
            yield return new WaitForSeconds(0.1f); 
            sprintSpeed = originalSpeed; 
        }

    statehandler:
    // Mode - Sprinting
                if ((Input.GetAxisRaw("Horizontal") != 0 || Input.GetAxisRaw("Vertical") != 0) && Input.GetKey(sprintKey))
                {
                    state = MovementState.sprinting;
                    moveSpeed = sprintSpeed;
                    StartCoroutine(SprintBoost());
                }


    но это работает криво.

    Большое спасибо за подсказки по поводу совмещения состояний. Также, попробую сделать состояние рывка еще. Но все равно остается главный вопрос:
    если по прошествию 2 секунд клавиша ещё не отпущена, то переводишь состояние в спринт.
    как правильно получать то отпущена она или же нет? если проверять в апдейте, то, например, я замжу клавишу и в результате мы получим: в первом кадре она нажата, во втором кадре отпущена, потому что проверка каждый кадр будет. значит, то что я записываю в отдельную переменную, правильно? например сделаю для ПКМ:
    if (Input.GetMouseButtonDown(1))
            {
                test = true;
            }
            if (Input.GetMouseButtonUp(1))
            {
                test = false;
            }
    Написано
  • Как сделать анимацию и механику атаки персонажа на Unity 3D (экспорт из Blender)?

    @ZeFi Автор вопроса
    Kentavr16, спасибо, я нашла решение програмно менять положение мечей(например если хочу подкинуть)
    Написано
  • Как сделать анимацию и механику атаки персонажа на Unity 3D (экспорт из Blender)?

    @ZeFi Автор вопроса
    Kentavr16, К мешу я ни разу не пробовала присоединить, я пыталась присоединить именно к ригу разными способами, как и писала выше:
    - сами мечи к ригу
    - кости, которые создала и привязала к мечам, к ригу персонажа
    - вытягивала кости из рига персонажа и присоединяла к ним мечи
    Написано