Пауза фона(Решено)

Программирование на Юнити.

Пауза фона(Решено)

Сообщение ][@FF 23 апр 2011, 15:32

Доброго дня.
При реализации паузы в игре столкнулся с такой проблемой.
когда жму получить информацию об объекте ставлю игру на паузу (Time.timeScale = 0f;) перемещение блокируется тк оно зависит от времени, выводится информация об объекте, НО задний фон (за ГУИ с информацией) вращается в зависимости от вращения мыши. мне нужно чтобы фон оставался статичным при движении мыши (то есть мышь должна оставаться подвижной а фон оставаться на месте).
приветствуются любые подсказки.

Синтаксис:
Используется csharp
void OnMouseDrag()
    {
        MainWindowInfoShowBool = true; // показываем окно с информацией об объекте
        Time.timeScale = 0f; // останавливаем время
        Screen.lockCursor = false; // показываем курсор мыши
        GetComponent<MouseLook>().enabled = false; // по идее этот код должен был блокировать скрипт на С# содержащий управление мышью. если я его ставлю на нажатие по объекту выводит ошибку
     }

MouseLook-С#скрипт управления мышью на моей камере

NullReferenceException: Object reference not set to an instance of an object
InfoWindow.OnMouseDrag () (at Assets/scripts/InfoWindow.cs:205)
UnityEngine.SendMouseEvents:DoSendMouseEvents()

Но даже если он сработает это не будет выходом, мне так кажется, потому что управление мышью заблокируется или я не прав?
И так задача. Необходимо чтобы фон стоял на месте и не вращался, и при этом была возможность двигать и кликать мышью.
Последний раз редактировалось ][@FF 23 апр 2011, 16:40, всего редактировалось 1 раз.
Аватара пользователя
][@FF
UNIт
 
Сообщения: 62
Зарегистрирован: 24 фев 2011, 20:02
  • ICQ

Re: Пауза фона

Сообщение Paul Siberdt 23 апр 2011, 16:14

А попробуйте в контроллере, что зависит от передвижения мышки добавить множитель текущего TimeScale :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Пауза фона

Сообщение ][@FF 23 апр 2011, 16:40

Гениально, спасибо большое, как раз то что нужно.
(Все гениальное просто, но не все простой гениально)
и так
в MouseLook.cs - скрипте отвечающем за движение мыши(всегда входит в стандартно созданную сцену) приаттаченной к камере меняем две строчки
1) float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
на
float rotationX = (transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX) * Time.timeScale;
она отвечает за вертикально перемещение мыши
2) rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
на
rotationY += (Input.GetAxis("Mouse Y") * sensitivityY) * Time.timeScale;
за горизонтальное

соответственно если мы Time.timeScale; в нашем скрипте ставим 0 и отображаем мышь, то задний фон остается неподвижным а наша мышка все равно двигается
ПС не забываем включать обратно Time.timeScale=1 а то фон так и останется неподвижным
Аватара пользователя
][@FF
UNIт
 
Сообщения: 62
Зарегистрирован: 24 фев 2011, 20:02
  • ICQ

Re: Пауза фона(Решено)

Сообщение DAlex 24 апр 2011, 22:12

Синтаксис:
Используется csharp
Camera.main.GetComponent<MouseLook>().enablet = false;
 
Аватара пользователя
DAlex
UNец
 
Сообщения: 20
Зарегистрирован: 10 фев 2011, 00:05
  • ICQ


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10