- Проблема с прыжками в Unity — персонаж не прыгает, если идет к платформе.
- 2 ответа
- Решение
- РЕДАКТИРОВАТЬ
- Финальный код
- Не работает прыжок
- Кнопка прыжка не действует на персонажа
- Почему персонаж 2D в Unity не прыгает? Во всех проектах!
- Проблема с двойным прыжком на Unity
- 2 ответа 2
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками c# unity3d или задайте свой вопрос.
- Связанные
- Похожие
- Подписаться на ленту
Проблема с прыжками в Unity — персонаж не прыгает, если идет к платформе.
У меня проблема с прыжком: если мой персонаж ХОДИТ на платформу X, он не будет прыгать, но когда она Прыгает на платформу X, она может совершить прыжок.
Для платформ в настоящее время я использую 2 2D-коллайдера Box Collider (один с установленным флажком «запускается»)
Для персонажа в настоящее время я использую 2 Box Collider 2D (один с отмеченным флажком) и Rigidbody 2D.
Ниже приведен код для прыжков и заземления, который я сейчас пытаюсь использовать.
Проблема возникает в одной и той же части каждой платформы. (Каждый квадрат представляет собой спрайт одной платформы, и все они имеют одинаковые точные характеристики, поскольку я копирую и вставляю каждый из них). Проверьте фото по этой ссылке: https://imgur.com/a/vTmHw
2 ответа
Я думаю, здесь есть пара проблем.
Во-первых, использование Triggers для проверки этого типа столкновения, вероятно, не лучший путь вперед. Я бы предложил не использовать триггеры, а вместо этого использовать OnCollisionEnter2D() . Triggers просто определяет, перекрывается ли пространство столкновения двух объектов друг с другом, тогда как нормальные столкновения сталкиваются друг с другом, как если бы они были двумя твердыми объектами. Если смотреть так, будто вы пытаетесь понять, приземлились ли вы на пол, вы не хотите проваливаться сквозь пол, как Triggers .
Во-вторых, я бы предложил использовать AddForce вместо GetComponent ().velocity .
Ваш окончательный сценарий может выглядеть примерно так:
Это происходит потому, что у ваших квадратов есть отдельные коллайдеры. Представьте себе это:
Есть два блока: A и B . Вы стоите на блоке A . Теперь вы пытаетесь пройти по блоку B . Как только ваш коллайдер Rigidbody2D касается блока B , ваш персонаж получает событие OnTriggerEnter2D(. ) . Теперь вы утверждаете, что обоснованы.
Однако в этот момент вы все еще сталкиваетесь с блоком A . Как только ваш Rigidbody2D больше не сталкивается с блоком A , ваш персонаж получает OnTriggerExit2D(. ) . Теперь вы заявляете, что больше не обоснованы. Но на самом деле вы все еще сталкиваетесь с блоком B .
Решение
Вместо переменной bool для проверки заземления можно использовать переменную типа byte с именем collisionsCounter :
- Как только вы вводите триггер — увеличивайте счетчик.
- После выхода из триггера уменьшите счетчик.
Проверьте, действительно ли вы находитесь над коллайдером!
Теперь, когда вам нужно проверить, заземлен ли ваш персонаж, вы можете просто использовать
РЕДАКТИРОВАТЬ
Собственно, после того, как задал вопрос дальше, я понял, что у вас есть совершенно ненужные коллайдеры (я говорю о триггерных). Удалите те. Теперь у вас есть только один коллайдер на объект. Но чтобы получать призывы к коллизии, вам нужно изменить:
- OnTriggerEnter2D(. ) в OnCollisionEnter2D(Collision2D)
- OnTriggerExit2D(. ) в OnCollisionExit2D(Collision2D)
Финальный код
Здесь могут быть мелкие опечатки, так как весь код был набран в Блокноте .
Источник
Не работает прыжок
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Решил портировать игру на андроид но управление не работает. Прыжок и стрельба работает
Решил портировать игру на андроид но управление не работает. Прыжок и стрельба работает. Очень.
Не работает прыжок
Не работает прыжок в игре. Помогите пожалуйста. using System.Collections; using.
Таблица содержит результаты спортивных соревнований: Ф.И.О., время на 100 м, время на 1 км, прыжок в высоту, прыжок в длину. Составить массив записей
Таблица содержит результаты спортивных соревнований: Ф.И.О., время на 100 м, время на 1 км, прыжок.
Прыжок 2Д
Я написал такой скрипт для прыжка суть его такова когда срабатывает функция OnCollisionStay2D.
Прыжок
Сделал прыжок, но проблема в том что когда платформа крутиться, ГГ может прыгнуть как пробка.
C# Прыжок и преграды
Здравствуйте. Собственно, сделал прыжок, то есть моя кнопка по нажатию на space (пробел) прыгает, и.
Прыжок с движением
Доброе время суток. Пишу для себя небольшой платформер. Возникла проблема с прыжком. Сам прыжок.
Идеальный прыжок
Доброго времени. Я пытаюсь сделать 2D мирок, где есть поверхности. Бегать по ним я могу, но прыгать.
Источник
Кнопка прыжка не действует на персонажа
Здраствуйте, такой вопрос. Второй день мучаюсь не могу сделать так чтобы персонаж прыгал при нажатии на кнопку на экране. На данный момент кнопка при нажатии ничего не делает, Хотя код не имеет ошибок, и в юнити тоже. Персонаж просто не реагирует на нажатия. Кнопку привязал через OnClick(). Помогите пожалуйста, как мне исправить код так чтобы все работало как надо.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Проблемы с анимацией прыжка 2d персонажа
Создал метод отвечающий за прыжок, потом создал оператор «if», который отвечает за проверку нажатия.
Функция прыжка персонажа, разметка сцены
Создал разметку уровня игры, разделил на 4 части (верх, низ, лево и право) сделал так, чтобы при.
Реализация прыжка персонажа для аналога Марио с/c++ builder
Хочу обратиться к вам с проблемой. вот пишу на курсовой игру Марио. точнее жалкий аналог под.
Кнопка прыжка для телефона
Подскажите пожалуйста,делаю первый проект на unity 2D платформер хочу добавить кнопку прыжка для.
Земля определяется как true и false, когда падает в начале false, когда бежит true
Добавлено через 4 минуты
Сейчас выложу гиф, как только скопрессируется, вы увидите весь мой интерфейс в юнити
Не действует кнопка закрытия и перехода на другой флэш-файл
Главный файл Main.fla btn_st_1.addEventListener(MouseEvent.CLICK, function(e) <.
Траектория прыжка. Расстояние от места прыжка и до приземления
Честно говоря, просто в ступоре, не знаю возможно ли такое подсчитать вообще. Имеется объект и.
Повторный вызов метода прыжка при зажатой кнопке «прыжка»
Доброго времени суток! Есть 2д платформер, в котором персонаж умеет прыгать. Метод вызывается.
Траектория прыжка
Рассмотрим пример иллюстрирующий математическую модель описывающий траекторию кошачьего прыжка. Из.
Анимация прыжка
Пытаюсь сделать анимацию прыжка, в окне Animatort, поставил параметры вызова анимации,но один.
Высота прыжка
Изучить, как связана высота прыжка с площадью поперечного сечения парашюта, чтобы скорость.
Источник
Почему персонаж 2D в Unity не прыгает? Во всех проектах!
Делал как то раз новый проект, написал скрипт. Все точно было правильно и как в друг я проверяю игру, и вижу как персонаж двигается влево и вправо, но не прыгает, хотя скрипт был правильный.
Потом проверяю в других проектах, и он там тоже не работает хотя раньше работал. Я подумал может быть я куда то не туда тыкнул в настройках. решил сделать Сброс настроек! И не чего. Все тоже самое. Переустановил Unity. Если что на версии (2019.1.9f1). Тоже самое. Я начинающий в программе. работаю в 2D играх. Снизу скрипт! Если что там еще к нему прикреплен маленькая часть для лестницы, так что не смотрите туда
Скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Hero : MonoBehaviour
<
public float speed = 1.5f; // скорость движения
public float acceleration = 100; // ускорение
public float jumpForce = 5; // сила прыжка
public float jumpDistance = 0.75f; // расстояние от центра объекта, до поверхности (определяется вручную в зависимости от размеров спрайта)
public bool facingRight = true; // в какую сторону смотрит персонаж на старте?
public KeyCode jumpButton = KeyCode.Space; // клавиша для прыжка
public string ladderTag = «GameController»; // тег лестниц
private int layerMask;
private Rigidbody2D body;
private Vector3 upLadder, downLadder, ladderPos, direction;
private bool isLadder;
Источник
Проблема с двойным прыжком на Unity
у меня есть проблема с игрой на Unity. Я решил сделать небольшую игру типа платформера, есть проблема с прыжком, если очень много раз нажимать на кнопку прыжка он просто просто улетает вверх(прыгает по воздуху), нужно это как-то исправить.
2 ответа 2
В комментарии написали, что можно добавить проверку коллизии с поверхностью (стоит ли персонаж на земле), но проблема иногда все равно будет заметна, особенно если персонаж будет бегать и прыгать на неровной поверхности. Пусть обьект, который будет прыгать будет называтся Person, а вспомогательный обьект будет называтся JumpTracker. Для того, что бы решить проблему нужно добавить обьект JumpTracker и расположить его прямо на грани, где будет Person встречатся с землей. Обьект JumpTracker нужно в 2-4 раза меньше, чем обьект Person (высота y, ширина x, глубина z), также добавить на него коллайдер и поставить галочку isTrigger. Нужно создать скрипт JumpTrackerScript, где будет метод OnTriggerStay(collider collider) (или как там) и if (collider.gameObject.transform.tag == «ground») < isGround = true; >Как-то так, возможно много неточностей с моей стороны.
можно увидеть интересную реализацию проверки IsGrounded через
если нужен 2йной прыжок нужно сделать так же, только с задержкой между прыжками во времени. Что бы нельзя было зажать кнопку прыжка и взлетать. То есть проверяем на isGrounded, делаем прыжок если все ок и засекаем время до следующего возможного прыжка. А после второго прыжка делать возможным только снова по IsGrounded.
Так же нужно реализовать счетчик прыжков что бы нельзя было всегда летать. То есть 2 прыжка, а потом уже не прыгать пока персонаж не попадет снова на землю.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками c# unity3d или задайте свой вопрос.
Связанные
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.10.15.40479
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник