25 / 25 / 15
Регистрация: 17.02.2014
Сообщений: 310
|
||||||
1 | ||||||
Прыжок 2Д16.07.2015, 15:50. Показов 5544. Ответов 12
Метки нет (Все метки)
Я написал такой скрипт для прыжка суть его такова когда срабатывает функция OnCollisionStay2D значит игровой персонаж на земле и ему можно прыгать а когда функция не срабатывает значит персонаж уже прыгну и ему нельзя прыгнуть снова пока он не на земле.
0
|
16.07.2015, 15:50 | |
Ответы с готовыми решениями:
12
Прыжок Прыжок AddForce Прыжок в 2d платформере Прыжок персонажа |
103 / 90 / 19
Регистрация: 15.04.2015
Сообщений: 353
|
|
16.07.2015, 16:27 | 2 |
Проверять координаты соприкосновения, и сравнивать их с координатами центра персонажа. Если точка соприкосновения однозначно ниже, значит, это земля.
1
|
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
|
||||||
16.07.2015, 16:57 | 3 | |||||
Можно попробовать ввести булевый флаг isOnGround и проверять его при нажатии на пробел.
1
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
||||||
16.07.2015, 17:04 | 4 | |||||
а еще лучше примерно вот так (из 3D случая, ландшафт по карте высот):
0
|
103 / 90 / 19
Регистрация: 15.04.2015
Сообщений: 353
|
|
16.07.2015, 17:33 | 5 |
Вопрос был, скорее, в том, как автору, собсно, выбирать значение для isOnGround. Сейчас он, считай, проверяет его в OnCollisionStay, который работает и при соприкосновении со стеной.
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
||||||
16.07.2015, 17:57 | 6 | |||||
Ну дык проверять коллизию только с полом. Если она есть только тогда учитывать нажатие кнопки прыжка.
Добавлено через 1 минуту т.е. при использовании карты высот примерно вот так:
0
|
103 / 90 / 19
Регистрация: 15.04.2015
Сообщений: 353
|
|
16.07.2015, 18:11 | 7 |
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
16.07.2015, 18:16 | 8 |
Ему больше алгоритм чем код нужен. Тут пример алгоритма. Правда больше ориентирован на новичка разработки чего-то подобного Unity а не "на Unity" (код из нутрей самодельного движка). Как понимаю те же данные - где и как произошло пересечение можно вытащить из передаваемой в обработчик col : Collision2D и точно так же обработать.
1
|
103 / 90 / 19
Регистрация: 15.04.2015
Сообщений: 353
|
|
16.07.2015, 18:25 | 9 |
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
16.07.2015, 18:28 | 10 |
0
|
25 / 25 / 15
Регистрация: 17.02.2014
Сообщений: 310
|
|||||||||||
17.07.2015, 15:56 [ТС] | 11 | ||||||||||
Всем спасибо за помощь
Вот такой я составил код
Я еще немного модифицировал свой код так как коллайдеры не всегда такие же как и размер спрайта, но и он работает не в совершенстве, когда стоять между двумя спрайтами одновременно прыжок удваивается (+3,5 на +7 (3,5+3,5)) как этого избежать ?
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
17.07.2015, 19:02 | 12 |
OnCollisionStay2D как понимаю вызывается последовательно для каждого объекта для которого обнаружена коллизия. Заведи внешний флаг что он уже прыгнул (т.е. взводи флаг при прыжке), и при поднятом флаге тоже не прыгай. А в начале каждого цикла просчета коллизий обнуляй флаг.
1
|
25 / 25 / 15
Регистрация: 17.02.2014
Сообщений: 310
|
||||||
17.07.2015, 21:05 [ТС] | 13 | |||||
0
|
17.07.2015, 21:05 | |
17.07.2015, 21:05 | |
Помогаю со студенческими работами здесь
13
Прыжок на андроиде Прыжок в unity2D Прыжок и стрельба в юнити Не могу сделать прыжок Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |