| imho.ws |
![]() |
|
|
|
# 1 |
|
Full Member
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941
![]() ![]() ![]() ![]() ![]() ![]() |
ускорение в игре
Привет!
Как сделать плавное увеличение скорости. Допустим чтоб вертолетик в игре медленно разгонялся. Основа - OpenGL, но не на прямую и не через Glut. прерывания клавиатуры получаю через isKeyDown(SG_RIGHT) там же ставится на сколько позиций менять положение объекта (допустим y+=3 или y-=3), то есть позиция относительно текущей позиции. Числа целые... пробовал несколько вариантов но так клавиаутра посылает сигналы довольно быстро то все ускорение пролетает довольно быстро. Есть идея создатьмассив и брать среднее значение из него.. но это слишком нудно получится... Язык С++, но лучше алгоритм. сеньксь
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения! М.Фрай |
|
|
|
|
# 2 |
|
Advanced Member
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498
![]() ![]() ![]() ![]() |
ну тут такой момент - преывание с клавы ты действительно получаешь очень быстро - к этим интервалам привязываться ИМХО не имеет особого смысла в случае с целыми числами - лучше использовать числа с плавающей точкой... тебе нужена какая-нибудь быстрорастущая функция, которая будет вначале медленная а потом быстрая - на бесконечности у тебя как раз будет максимальная скорость... Что-то наверное типа экспоненты в вариациях...прерывание в данном случае будет играть роль значений аргументов видимо, т.к. примерно с одинаковым интервалом будет срабатывать... а текущее положение это будет множитель - тут смотря от чего у тебя отсчитываются координаты... ну вот как-то так, примерно
__________________
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|
|
|
|
# 3 |
|
Full Member
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941
![]() ![]() ![]() ![]() ![]() ![]() |
Спасибо
![]() собственно сам только что нашел решение: класс и на каждое прерывание прибавляем/вычитаем к внетрунней переменной (double) 0.05 и выдаем как целое.Если ничего не происходит - тормозим. Само-собой получается прямая линия если чертить график )
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения! М.Фрай |
|
|