Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 21.11.2013, 18:18   #1
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Вопрос Получить "реальный" DeltaTime

Добрый вечер.

Суть такова:
  • При помощи Time.timeScale=0 был достигнут эффект "стоп-время".
  • Анимация останавливается, партиклы останавливаются - это хорошо.
  • Значение Time.Deltatime становится равным нулю - это плохо.

Как узнать "реальный" дельтатайм, как если бы timeScale был равен единице?

И еще - как воспроизвести анимацию партиклов при Time.timeScale=0?
Манипуляции с particleSystem.time ни к чему не приводит.
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Старый 22.11.2013, 09:10   #2
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений
(для 995 пользователей)
Ответ: Получить "реальный" DeltaTime

Вот нашёл на бурговском сайте, попробуй.

The private timescale multiplier in it's simple form will not work with a timescale of zero. This is what I did to have a logical Timer that can be paused while the rest of the game continues on it's usual pace:

using UnityEngine;
using System.Collections;
 
//=========================================================================
// Class: TimeKeeper
// Mirrors Unity's Time.time, allowing the game to be logically paused
// while the animations, UI, and other Time.time dependant tasks keep running at the usual pace.
// TimeKeeper can be paused by the game when timestamp is set to 0,
// or by the user pressing the Pause/Break key.
//=========================================================================
public class TimeKeeper MonoBehaviour {
 
    
// Variable: time
    // Access TimeKeeper.time to keep track of time with a different timescale then Time.time (read-only)
    
public static float time {
       
get { return instance.mTime; }
    }
 
    
// Variable: timescale
    // Current timescale of the TimeKeeper.
    
public static float timescale {
       
get { return instance.mPaused instance.mTimescale; }
       
set instance.mTimescale value; }
    }
 
    
//=========================================================================
    
private static TimeKeeper instance;
 
    private 
float mTime 0.0f;
    private 
float mTimescale 1.0f;
    private 
float mLastTimestamp 0.0f;
    private 
bool  mPaused false;
 
    
//=========================================================================
    
void Start ()
    {
       if (
instance)
         
Debug.LogError("Singleton violated (ooh!)");
       
instance this;
       
instance.mLastTimestamp Time.realtimeSinceStartup;
    }
 
    
//=========================================================================
    
void Update ()
    {
       if (
Input.GetKeyDown(KeyCode.Pause))
         
this.mPaused = !this.mPaused;
 
       
float realDelta     Time.realtimeSinceStartup this.mLastTimestamp;
       
this.mLastTimestamp Time.realtimeSinceStartup;
       
this.mTime += realDelta timescale;
    }

I did it with my needs in mind - you could 'un-Singletonize' that and have an arbitrary number of TimeKeepers and attach them to your objects.

А вообще можно пробовать для нужных объектов просто вырубать "движущие" скрипты, как Rigidbody для остановки физики или ParticleEmitter для остановки частиц.
(Offline)
 
Ответить с цитированием
Старый 23.11.2013, 01:30   #3
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Ответ: Получить "реальный" DeltaTime

Да в том и дело, что там не скрипты, а обычная анимация и партиклы.

А "вручную" обращаться к каждому объекты, да еще и к дочерним объектам тоже, как-то лениво

Может есть способ обратиться сразу ко всем анимациям на сцене?
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Старый 23.11.2013, 08:46   #4
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Получить "реальный" DeltaTime

Так не пробовал? Но сразу предостерегу - в каждом кадре искать объекты слишком не правильно.
var animations = (Animation[])FindObjectsOfType(typeof(Animation));
foreach(var 
anim in animations)
{


__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
PassCall (23.11.2013)
Старый 23.11.2013, 15:09   #5
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Ответ: Получить "реальный" DeltaTime

Сообщение от pax Посмотреть сообщение
var animations = (Animation[])FindObjectsOfType(typeof(Animation));
foreach(var 
anim in animations)
{


Великолепно, то, что надо.

Сообщение от pax Посмотреть сообщение
Но сразу предостерегу - в каждом кадре искать объекты слишком не правильно.
Искаться будет от силы раз в несколько секунд.
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com