Показать сообщение отдельно
Старый 18.04.2006, 22:48   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Я бы для этого использовал твининг, рассчет скорости зависящей от FPS конечно хорошо, но проще обновлять игру 30 раз в секунду, чем n=FPS раз в секунду...

Вот стандартный шаблон:
...

period=1000/FPS ; FPS определяет, сколько раз в сеунду будет обновляться игра, если FPS = 30, то игра будет обнавляться 30 раз, но текущая скорость кадров не будет от этого зависеть, даже если она будет меньше 30.
time=MilliSecs()-period


While Not KeyHit(1)

	Repeat
 elapsed=MilliSecs()-time
	Until elapsed

;Сколько кадров прошло
	ticks=elapsed/period
	
;положение между предидущим и следующим кадрами (от 0 до 1)
;при значении не равном 0 или 1 блитц достраивает промежуточные кадры
	tween#=Float(elapsed Mod period)/Float(period)
	
	For k=1 To ticks
 time=time+period
 ' сохранение текущего положения всех объектов для расчета промежуточного их положения между текущим и новым положением (CaptureWorld)
 If k=ticks Then CaptureWorld 

 UpdateGame();Обновление игры
 UpdateWorld
	Next
	
	RenderWorld tween
	Flip
	
Wend

End
Таким образом StepDistance# = Const, если надо ускорить игрока, то просто надо увеличить StepDistance#, замедлить -уменьшить StepDistance#, но не надо ее рассчитывать при каждом обновлении игры.
Не волнуйся, если поймешь не сразу

PS: эта часть кода из примера MAK->CASTLE
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием