forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Замедление времени... (http://forum.boolean.name/showthread.php?t=12378)

Ganociy 16.04.2010 14:16

Замедление времени...
 
Смотрел тут... Ниже тема похожая, но конкретно как всегда никто не сказал . Так вот всё таки как этого добиться средствами Блитза .
Можно конечно все переменные отвечающие за анимацию , за скорости передвижения и т. д. в определённый момент понизить(можно FPS сократить, но это если хочешь достичь эффекта тормознутости:-D ) , но согласитесь глупо.
И тут же опять вопрос : опять же ,как СРЕДСТВАМИ БЛИТЗА сделать так , стобы на переднем плане отчётливо виднелся игрок(или оружие) , а остальное размыто виднелось.

PS Если кодом можете это представить , то буду очень благодарен...

SBJoker 16.04.2010 14:57

Ответ: Замедление времени...
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 200 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

Копипастер детектед.

Amatsu 23.05.2010 18:36

Ответ: Замедление времени...
 
Цитата:

Сообщение от Ganociy (Сообщение 144849)
Можно конечно все переменные отвечающие за анимацию , за скорости передвижения и т. д. в определённый момент понизить(можно FPS сократить, но это если хочешь достичь эффекта тормознутости:-D ) , но согласитесь глупо.

Не соглашусь. Сделал этим методом, все прекрасно работает. Другого выхода не вижу. К тому же в этом случае ты можешь сам контролировать, какие процессы замедлять, а какие оставлять неизменными или даже ускорять. А средствами блитца можно только 1) замедлить анимацию моделей 2) снизить количество обрабатываемых циклов в секунду, но это, как было верно замечено, тупо снизит количество фпс, что будет заметро невооруженным глазом.

И кстати, читал ты невнимательно другие темы по этому вопросу - понижать ВСЕ переменные в нужный момент тебе и не нужно, тебе надо всем переменным отвечающим за скорость добавить переменную множитель, которая в обычном режиме равна 1, что значит все процессы протекают с нужной скоростью. Стоит тебе присвоить этой переменной значение 0.5 как все нужные процессы в игре замедлятся в 2 раза.

Reizel 23.05.2010 20:35

Ответ: Замедление времени...
 
Делаеца просто. В начале цЫкла:
oldFps=millisecs()
//конец цикла
deltaFps=millisecs()-OldFps
if DeltaFps=0 then DeltaFps=1
FPS=1000/deltafps

GAME_SPEED_K#=float 60/Fps
//Вот теперь мы имеем коэффициент тормознутости системы :)
//На него умножаем все счетчики и перемещения обэктов
//а если нужно замедлить игру...
GAME_SPEED_K#=GAME_SPEED_K#*Speed_K#
Speed_K#=Speed_K#-.05

Voila, C'est tres simple :)

Colossus 22.10.2010 17:24

Ответ: Замедление времени...
 
хорошо, а как быть с физикой? число рендера pxRenderPhysic(Speed*DeltaTime) чтоли? где Speed = 30 а DT = 1 получится что время обновления физики замедлится только?))

Mr_F_ 23.10.2010 20:11

Ответ: Замедление времени...
 
я скоко не парился с враппером физыкса, так и не смог его нормально замедлять) да в общем вообще держать скорость физики стабильной.

Colossus 23.10.2010 20:34

Ответ: Замедление времени...
 
ну я в общем попробовал сделать у себя так:

Код:

xGraphics3D 1024,768,32,False,False
xSetBuffer xBackBuffer()

pxCreateWorld (1,"вротмненоги")
pxSetGravity 0,-9.8,0

пишем переменную для нашего замедлителя (DeltaTime#)
и снизу сразу же пишем переменную скорости обновления физки( мне лично так удобнее)


Global DeltaTime# = 1
Global PhysXSpeed# = 30



While Not xKeyHit(KEY_ESCAPE)
сдесь как раз пропписываем нашу фишку, деля скорость физики на замедлитель
pxRenderPhysic(PhysXSpeed#/DeltaTime#,0)

не забываем воткнуть обновление функции))
xUpdateDeltaTime()
xUpdateWorld
xRenderWorld

xFlip
Wend
End

Пишем функцию обновления нашего "замедлителя"

Function xUpdateDeltaTime()
        If xKeyDown(42) Then
                DeltaTime# = DeltaTime# - 0.05
        Else
                DeltaTime# = DeltaTime# + 0.03
        End If
       
        If DeltaTime# >=1 Then DeltaTime# = 1
        If DeltaTime# <=0.1 Then DeltaTime# = 0.1

End Function

тоесть получается что если мы нажимаем кнопку (пусть это будет 42 - левый Shift) то у нас переменная
DeltaTime# от еденицы сводится к ее десятой части - 0.1 и у нас получается что все плавно замедляется))


Reizel 24.10.2010 10:27

Ответ: Замедление времени...
 
Насколько я помню, pxRenderPhysics(x) будет стремиться к ускорению рендера физики, при X->0, => нам нужно из Y (Где У - коэффициент замедления времени) выразить функцию, стремящуюся к бесконечности, при X -> 0, а функция эта такова:
X=60/Y
Доказательство.
Пусть Y=1, тогда Х=60/1 = 60, т.е. нормальный рендер физики
Положим Y=0.5, тогда X=60/0.5 = 120, т.е. в два раза замедленный рендер физики .

Colossus 24.10.2010 14:26

Ответ: Замедление времени...
 
Гениально, Ватсон! похоже ты только что обьяснил как работает мой код)))


Часовой пояс GMT +4, время: 11:48.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot