![]() |
ускорение в игре
Привет!
Как сделать плавное увеличение скорости. Допустим чтоб вертолетик в игре медленно разгонялся. Основа - OpenGL, но не на прямую и не через Glut. прерывания клавиатуры получаю через isKeyDown(SG_RIGHT) там же ставится на сколько позиций менять положение объекта (допустим y+=3 или y-=3), то есть позиция относительно текущей позиции. Числа целые... пробовал несколько вариантов но так клавиаутра посылает сигналы довольно быстро то все ускорение пролетает довольно быстро. Есть идея создатьмассив и брать среднее значение из него.. но это слишком нудно получится... Язык С++, но лучше алгоритм. сеньксь |
ну тут такой момент - преывание с клавы ты действительно получаешь очень быстро - к этим интервалам привязываться ИМХО не имеет особого смысла в случае с целыми числами - лучше использовать числа с плавающей точкой... тебе нужена какая-нибудь быстрорастущая функция, которая будет вначале медленная а потом быстрая - на бесконечности у тебя как раз будет максимальная скорость... Что-то наверное типа экспоненты в вариациях...прерывание в данном случае будет играть роль значений аргументов видимо, т.к. примерно с одинаковым интервалом будет срабатывать... а текущее положение это будет множитель - тут смотря от чего у тебя отсчитываются координаты... ну вот как-то так, примерно :)
|
Спасибо :)
собственно сам только что нашел решение: класс и на каждое прерывание прибавляем/вычитаем к внетрунней переменной (double) 0.05 и выдаем как целое.Если ничего не происходит - тормозим. Само-собой получается прямая линия если чертить график :)) |
| Часовой пояс GMT +4, время: 16:34. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.