Сейчас я работаю над многопользовательским fps, чтобы изучить UNET и Unity. в этом проекте я использую компонент Network Animator для синхронизации анимации.
У меня есть один слой, который выполняет обычные состояния, такие как ходьба и прыжки, а другой - просто контролирует верхнюю часть тела для определения объема. Этот слой активируется при наведении.
Параметры синхронизации прекрасны, но не вес слоя. Скрипт, который контролирует вес слоя, отключается на удаленном плеере, поскольку он является частью того же скрипта, который заботится о стрельбе, и мы не хотим стрелять с удаленного плеера. Поэтому я поместил этот код в другой скрипт и сделал 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);
как я могу синхронизировать переменную, которая обновляется в отключенном скрипте? И какие различные настраиваемые атрибуты, такие как [Command] и [ClientRpc], я должен использовать, чтобы это работало?
Я читал документацию и руководства по UNET, но с трудом справляюсь с этой относительно простой задачей, так как у меня Трудно понять разницу этих звонков.
Shoot
с помощью флага? (if(!IsLocalAuthority) return;
) - person derHugo   schedule 06.03.2020