@vkvk

Как сделать лестницу для Android на Unity2D?

Всем привет! Пытаюсь сделать лестницу, но ничего не получается. Трудности возникают в том, что это нужно адаптировать под андроид и Input.GetAxis("Vertical") не поможет. Я добавил несколько переменных и добавил отдельную кнопку для спуска по лестнице, кнопка появляется когда персонаж подходит к лестнице. Добавил несколько переменных типа bool чтобы сделать проверку и ставить необходимую скорость подъема по лестнице для персонажа в нужный момент, а также ставить необходимое направление. Но ничего не работает, кнопки либо не работают, когда подходишь к лестнице, либо тебя толкает вниз, не зависимо от того, на какую кнопку сейчас нажимаю, вниз или вверх. Вот код.
переменные
[Header("Climbing")]
    public bool isClimbing = false;
    public bool ClimbingButtonDown = false;
    public GameObject ClimbingButton;
    public bool JumpButtonClimbing = false;
    public float speedClimbing = 0f;


кнопки
public void OnJumpButtonDown()
    {
        if (IsGronded == true && !isClimbing)
        {
            rb.velocity = Vector2.up * JumpForce;
            anim.SetInteger("State", 3);
        }

        if (IsGronded == true && isClimbing)
        {
            rb.bodyType = RigidbodyType2D.Dynamic;
        }

        if (isClimbing)
        {
            speedClimbing = 12f;
        }

        JumpButtonClimbing = true;
    }

public void OnClimbingButtonDown()
    {
        ClimbingButtonDown = true;
        if (isClimbing)
            speedClimbing = 12f;
    }

    public void OnClimbingButtonUp()
    {
        if (!isClimbing)
            ClimbingButton.SetActive(false);
    }


лестница
private void OnTriggerStay2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "Ladder")
        {
            isClimbing = true;
            gameObject.GetComponent<Player>().ClimbingButton.SetActive(true);
            if (JumpButtonClimbing && isClimbing && !ClimbingButton)
                transform.Translate(Vector3.up * speedClimbing * Time.deltaTime * 0.5f);

            if (ClimbingButton && isClimbing && !JumpButtonClimbing)
            {
                speedClimbing = 12f;
                transform.Translate(Vector3.down * speedClimbing * Time.deltaTime * 0.5f);
            }

            rb.bodyType = RigidbodyType2D.Kinematic;
        }
    }

    private void OnTriggerExit2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "Ladder")
        {
            ClimbingButton.SetActive(false);
            isClimbing = false;
            rb.bodyType = RigidbodyType2D.Dynamic;
        }
    }


Надеюсь кто-нибудь сможет помочь. Хочу сделать так, чтобы с помощью кнопок игрок мог сам выбирать когда ему остановится на лестнице и начать, например, спускаться вниз или просто продолжить подниматься вверх.
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы