Заморозка движения объектов в unity3d [закрыт]

104
22 января 2021, 12:00
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

Нужно при соприкосновении заморозить движение объектов.
С заморозкой движения одного объекта я бы и сам справился , но вот есть ли возможность заморозить движения всех объектов , но не их скрипты + изменение цвета с анимацией также должны работать . Думал над Time.timeScale = 0 , но не уверен будет ли работать ,то что описано выше.
Если же нет легкого способа так сделать , то лучше уж просто заморозить движение объекта.

Будет ли работать Time.timeScale = 0 так как нужно , если же нет то что стоит здесь сделать?

Answer 1

Решение:
1. в скрипте, который висит на объекте, что останавливает все Move-объекты (объекты которые двигаются), объявите событие:

public static event OnCollisionEvent = delegate { }; 

("static" позволит обращаться напрямую к этому событию из любого места)
2. в Move, где-нибудь сделайте метод, который будет содержать логику "остановки" данного объекта
3. в том же Move, где-нибудь в методе Start() вы должны будете подписать ваш Move-объект на глобальное событие остановки. Сделать это можно с помощью следующей строчки:

НазваниеВашегоСкрипта.OnCollisionEvent += НазваниеВашегоМетодаОстановки;

Таким образом, на этот момент, все ваши Move-объекты с момента отработки метода Start будут "слушать" и ждать события OnCollisionEvent
следовательно, вам осталось только вовремя вызвать это событие - а вместе с ним и всех "подписчиков", который следят за событием
4. вызываем событие в том самом скрипте, в методе столкновения (OnCollisionEnter2D) так:

OnCollisionEvent();

Если будут непонятки с синтаксисом, т.е. с самим написанием кода - погуглите про "события C#" или, например, тут простым языком описано и показано - https://metanit.com/sharp/tutorial/3.14.php.
Ответ был дан пользователем Mikhail Deyman.

READ ALSO
.pem в X509Certificate2

.pem в X509Certificate2

Доброго времени суток

95
c# как писать xPath [дубликат]

c# как писать xPath [дубликат]

Мне нужно использовать такой xPath //*[@id="contact_methods"]/li[2]/div/strong но компилятор не принимает его из за двойных кавычек, побывал нечто такое "//*[@id=" + "contact_methods"...

110
Рисование графов C# WinForms

Рисование графов C# WinForms

необходимо рисовать на winform графы имея лишь матрицы расстояний между пунктами

87
Бэкап mysql на kvm гипервизоре

Бэкап mysql на kvm гипервизоре

Допустим, существует некий centos7 сервер с libvirt (гипервизор)На этом сервере запущена виртуальная машина (гость) в которую проброшен lvm-раздел...

151