@justSMTH

Как убрать wall jump?

Я новичок в юнити и решил начать с простого 2Д платформера. После реализации системы прыжков я столкнулся с одной проблемой, если персонаж врежется в стену платформы (боковую её часть) и при этом нажмёт кнопку прыжка, то он улетит в космос. Вот мой код:

using UnityEngine;

public class Movment : MonoBehaviour {
    public float speed, JumpPower;
    public bool OnGround = true;

    void Update() {
        if (Input.GetKey(KeyCode.RightArrow))
            transform.Translate(new Vector2(speed * Time.deltaTime, 0));
        if (Input.GetKey(KeyCode.LeftArrow))
            transform.Translate(new Vector2(-speed * Time.deltaTime, 0));
        if (Input.GetKey(KeyCode.UpArrow) && OnGround) {
            OnGround = false;
            GetComponent<Rigidbody2D>().AddForce(Vector2.up * JumpPower);
        }

    }
    private void OnCollisionEnter2D(Collision2D collision) {
        if ((collision.gameObject.tag == "Platform")) {
            Debug.Log("WellDone");
            OnGround = true;
        }
    }
}

Изначально, я попытался решить данную проблему сделав платформу из 3 коллайдеров. Одного главного, самой платформы и 2-ух дополнительных, боковые части. Боковые коллайдеры должны были огородить основной коллайдер. Но к сожалению, это не помогло. Отладка показала, что игрок в любом случае касается помимо боковой платформы, ещё и основной.
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Crebor
if (Input.GetKey(KeyCode.UpArrow) (удержание клавиши) попробуйте заменить на
if (Input.GetKeyDown(KeyCode.UpArrow) (метод при опускании клавиш)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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