Всем привет! Пытаюсь сделать лестницу, но ничего не получается. Трудности возникают в том, что это нужно адаптировать под андроид и 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;
}
}
Надеюсь кто-нибудь сможет помочь. Хочу сделать так, чтобы с помощью кнопок игрок мог сам выбирать когда ему остановится на лестнице и начать, например, спускаться вниз или просто продолжить подниматься вверх.