Показать сообщение отдельно
Старый 14.12.2014, 03:35   #681
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: [TrueHorror] - разработка

Я бы так сделал (в Unity ограничение по времени работы физики на кадр задается):

var physicsStep 1f/100f;  // 100 раз в секунду обновлять физику
var maxPhysicsTimePerFrame 0.15f// максимальное время работы физики за кадр
var lastTime Now();
var 
physicsTimer 0// накопитель времени физики

while(true){
   var 
currentTime Now();
   var 
deltaTime currentTime lastTime;
   
lastTime currentTime;

   
physicsTimer += deltaTime;

   
Update(deltaTime); 
   
Render();

   var 
physicsSteps = (int)(physicsTimer physicsStep); // число шагов физики
   
physicsTimer -= physicsStep*physicsSteps// сбрасываем таймер физики (оставляем остаток)

   
var physicsWorkTime 0;
   var 
physicsStartTimeNow(); 

   for(
int i 0physicsStepsi++){
      
UpdatePhysics(physicsStep); // обновление физики
      
var physicsEndTime Now();
      
physicsWorkTime += physicsEndTime physicsStartTime;
      
physicsStartTime physicsEndTime;

      
// ограничение по времени работы физики
      
if(physicsWorkTime >= maxPhysicsTimePerFrame )
         break;
   }

__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
LLI.T.A.L.K.E.R. (15.12.2014), mr.DIMAS (14.12.2014)