В настоящее время я работаю над многопользовательским fps для изучения UNET и Unity. В этом проекте я использую компонент Network Animator для синхронизации c моих анимаций. У меня есть один слой, который управляет нормальными состояниями, такими как ходьба и прыжки, и другой, который просто контролирует верхнюю часть тела для обзора. Этот слой активируется при определении области видимости.
Параметры точная синхронизация, но не вес слоя. Сценарий, управляющий весом слоя, отключается на удаленном проигрывателе, поскольку он является частью того же сценария, который выполняет съемку, и мы не хотим снимать с удаленного проигрывателя. Поэтому я поместил этот код в другой сценарий и сделал Layerweight Syncvar, но все еще безрезультатно.
Это фрагмент, который устанавливает вес и постепенно его возвращает.
if (isScoped)
{
animator.SetLayerWeight(1, 1);
layerWeight = 1;
}
else
{
layerWeight = Mathf.Lerp(layerWeight, 0, 0.1f);
animator.SetLayerWeight(1, layerWeight);
}
animator.SetBool("Scoped", isScoped);
как можно Я синхронизирую c переменную, которая обновляется в отключенном скрипте? И какие различные пользовательские атрибуты, такие как [Command] и [ClientRpc], я должен использовать, чтобы это работало? Я прочитал документацию и руководства по UNET, но борюсь с этой относительно простой задачей, так как мне трудно понять разницу этих вызовов.