Мой игрок дважды прыгает в воздухе, чего я не хочу. Вот код из игрового класса, где, когда пользователь нажимает пробел, игрок прыгает, но он прыгает еще раз, когда находится в воздухе, когда снова нажимается пробел. Я пытался проверить, находится ли игрок на земле или нет, и он дает ложное значение независимо от того, находится ли игрок на земле или нет, и, следовательно, игрок не прыгает с этим кодом
Когда я удаляю второй оператор if, игрок один раз подпрыгивает в воздухе, а при повторном нажатии прыгает из воздуха.
Вот мой класс mycontactListener, в котором он проверяет, находится ли игрок на земле или нет. По какой-то причине он не вычисляет numFootContacts игрока, находящегося на земле.
Как остановить игрока от прыжков дважды или в воздухе?
он возвращает false, когда игрок находится в воздухе, и true, когда игрок находится на земле. Пока не отлаживал. По умолчанию он возвращает false, поскольку numFootContact равен 0.
Если выясняется, что он возвращает истину, когда вы думаете, что плеер не должен находиться на земле, то начните проверять, правильно ли обновляется numFootContacts. А затем продолжайте следовать по следу из хлебных крошек, пока не найдете первопричину. Отладка - это навык, на освоение которого нужно время. У вас здесь хорошая основа, но потребуется практика, чтобы она стала второй натурой. Хорошее правило: «Никогда не предполагайте, что какая-либо часть вашей программы работает правильно, пока вы не убедитесь, что она работает правильно во всех случаях». Удачи!
В классе contactListener он получает приспособление для игрока и алмаза, но не для стопы. Я не могу достать третий прибор под названием Foot. Как это получить?
Вам нужна ступня? Разве нельзя просто использовать контакт между игроком и бриллиантом?
Мне он нужен для столкновения плитки с ногой ...! Позже мне придется изменить цвет плитки, на которую приземлится игрок!




Лучше проверить, равно ли значение скорости по оси 0. На самом деле вы можете прыгать, только если вы не прыгаете и не падаете, я имею в виду, только если вы стоите.
Вот код:
if (MyInput.isPressed(MyInput.SPACE) &&
player.getBody().getLinearVelocity().y==0)
player.getBody().applyForceToCenter(0, 150, true);
Рассматривали ли вы добавление некоторой отладки в
isPlayerOnGround(), чтобы понять, почему он возвращаетtrue, когда вы думаете, что он должен возвращатьfalse?