Четверг, 28 Мая 2020, 04:03

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Реализация плавного прыжка
Реализация плавного прыжка
ilgamerДата: Понедельник, 24 Сентября 2012, 10:28 | Сообщение # 1
Needle Games
Сейчас нет на сайте


Код работает, но прыжок получается очень резкий. В сочетании с плавным приземлением это смотрится ужасно. Помогите сделать такой же плавный прыжок c замедлением к моменту достижения пика (максимальной точки) прыжка.
Заранее спасибо.




Сообщение отредактировал ilgamer - Понедельник, 24 Сентября 2012, 12:35
ArchidoДата: Понедельник, 24 Сентября 2012, 13:15 | Сообщение # 2
Сэнсэй
Сейчас нет на сайте
Так ты бы сделал нормальную физику, помню был вопрос о "траектории полета ядра". Можно сказать, что тут тоже самое + проверка коллизий, и усе.

C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ilgamerДата: Вторник, 25 Сентября 2012, 06:41 | Сообщение # 3
Needle Games
Сейчас нет на сайте
Так почему логика вроде моей..:
Если есть столкновение и нажата кнопка вверх, то пока jt не равно 1000, допустим, убавляем от Y персонажа 0.1.

..не работает как ожидалось?

P.S.
Опытным путем...
Короче, действительно в физике дело, Archido. Сейчас прикручу к ней проверку, и думаю, дело в шляпе.

Добавлено (25.09.2012, 06:41)
---------------------------------------------


Теперь персонаж прыгает на высоту jumpHeight, после чего включается гравитация.
Но не удается составить полноценное уравнение которое сделало бы прыжок естественнее (с небольшим замедлением к достижению пика).

Вот строка отвечающая за это:
Code
playerY-=(450-(450-jumpHeight-(jy-jumpHeight/2)))*dt;


Нужна помощь sad




Сообщение отредактировал ilgamer - Среда, 26 Сентября 2012, 01:31
IIyxMASTERДата: Вторник, 25 Сентября 2012, 07:05 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
собственно , сталкивался с подобным, только не для с, а для с#.
Логика проста.
При прыжке мы имеем определенную стартовую скорость jumpSpeed.
С этой скоростью мы движемся вверх.
При отсутствии гравитации мы бы постоянно летели вверх с этой скоростью.
Code
playerY += jumpSpeed

Однако каждую секунду на нас действует сила тяжести, поэтому скорость движения вверх постоянно уменьшается на некоторую переменную gravityPower.
Code
jumpspeed -= gravityPower

Вот и вся магия. :-)
Пример.
Скорость прыжка = 1. Гравитация 0.2
В первую секунду игрок пролетит 1, во вторую 0.8, в третью 0.6, на пятую секунду его скорость станет равна 0 и он ненадолго зависнет. Далее jumpSpeed опускается ниже 0 и игрок начинает двигаться вниз, сперва на 0.2, потом на 0.4 и т.д.
Твоя задача - отрегулировать переменные jumpSpeed и gravityPower так, чтоб прыжок смотрелся реалистично.


Сообщение отредактировал IIyxMASTER - Вторник, 25 Сентября 2012, 07:14
ilgamerДата: Вторник, 25 Сентября 2012, 10:56 | Сообщение # 5
Needle Games
Сейчас нет на сайте
Спасибо за помощь, IIyxMASTER.
Думаю, время потраченное на написание новой физики прыжка будет того стоить. wink

Добавлено (25.09.2012, 10:56)
---------------------------------------------
Есть!
"Плавненько", "красивенько". Еще раз спасибо, IIyxMASTER. Лови в репу плюс.

Делюсь кодом:




Сообщение отредактировал ilgamer - Вторник, 25 Сентября 2012, 11:09
Форум игроделов » Программирование » C/C++ » Реализация плавного прыжка
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2020 Рейтинг