Задать вопрос
@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-ух дополнительных, боковые части. Боковые коллайдеры должны были огородить основной коллайдер. Но к сожалению, это не помогло. Отладка показала, что игрок в любом случае касается помимо боковой платформы, ещё и основной.
  • Вопрос задан
  • 166 просмотров
Подписаться 1 Простой 9 комментариев
Пригласить эксперта
Ответы на вопрос 1
@Crebor
if (Input.GetKey(KeyCode.UpArrow) (удержание клавиши) попробуйте заменить на
if (Input.GetKeyDown(KeyCode.UpArrow) (метод при опускании клавиш)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы