Чтобы «захватить» это в VR, у меня есть простой скрипт, прикрепленный к контроллеру VR, который предполагается, что он обнаружит OnTriggerEnter, а затем обновит сетевое преобразование BladeA, чтобы оно как бы «приклеилось» к контроллеру. Это тоже работает нормально — за исключением того, что с точки зрения другого игрока (в VR) положение BladeA вообще не меняется. Я даже добавил TextMeshPro в холст со сценарием для вывода списка всех сетевых идентификаторов объектов, а BladeA имеет одинаковый идентификатор для обоих клиентов (гарнитур).
< em>Как вы думаете, почему позиция BladeA не синхронизируется для каждого пользователя?
Этот скрипт прикрепляется к дочернему объекту на каждом VR ручной контроллер:
Код: Выделить всё
using UnityEngine;
using Fusion;
public class SphereTriggerLogger : NetworkBehaviour
{
private NetworkObject intersectedNetworkObject; // Store the intersected NetworkObject
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("3D_Objects"))
{
NetworkObject netObj = other.GetComponent();
if (netObj != null)
{
intersectedNetworkObject = netObj; // Store the intersected NetworkObject
}
}
}
private void OnTriggerExit(Collider other)
{
if (other.CompareTag("3D_Objects"))
{
NetworkObject netObj = other.GetComponent();
if (netObj != null && netObj == intersectedNetworkObject)
{
intersectedNetworkObject = null; // Clear the reference when the object exits
}
}
}
public override void FixedUpdateNetwork()
{
if (intersectedNetworkObject != null)
{
NetworkTransform networkTransform = intersectedNetworkObject.GetComponent();
// Update the NetworkTransform to match the sphere's transform
networkTransform.transform.position = transform.position;
networkTransform.transform.rotation = transform.rotation;
}
}
}

Вот в чем я подозреваю, что может быть проблема:
(хотя не знаю, как это исправить).
Я подозреваю, что оба клиента видят свои собственные экземпляр BladeA, поскольку он загружается в сцену с самого начала, даже если оба пользователя согласны использовать один и тот же InstanceID для BladeA. И каждый клиент имеет полномочия над своим экземпляром (??), но не над экземпляром другого пользователя. Но в моей теории все еще есть дыры. Я просто не могу этого понять.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ot-syncing