Unity 网络代码 |无法分离 2 名玩家的目标

问题描述 投票:0回答:1

我正在为我和我的朋友们制作一个小游戏。我正在使用 Netcode 来制作多人游戏部分,但我不明白为什么我的玩家总是瞄准屏幕上的同一点。

所以,发生的情况是,我的玩家作为自上而下的视图,将玩家的目标放在角色应该瞄准的位置。但问题是,当其中一个旋转时,它们都会旋转......

图像中的问题:https://imgur.com/a/CnGg28u

这是我的目标部分的代码:

    private (bool success, Vector3 position) GetMousePosition()
    {
        /*if (!IsOwner)
            return (success: false, position: Vector3.zero);*/

        var ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out var hitInfo, Mathf.Infinity, groundLayerMask))
            return (success: true, position: hitInfo.point);
        else
            return (success: false, position: Vector3.zero);
    }

    private void Aim()
    {
        /*if (!IsOwner)
            return;*/

        var (success, position) = GetMousePosition();

        if (success && !player.isDead)
        {
            Vector3 direction = position - transform.position;
            direction.y = 0;
            //Debug.Log($"ID:{OwnerClientId} {position}, {direction}");

            isDebugAimPosition = true;
            aimPosition = position + new Vector3(0, 1.5f, 0);

            transform.forward = direction;
        }
    }

    void Update()
    {
        if (!IsOwner)
            return;

        Aim();
    }

我遇到了另一个问题,但似乎不是一个问题...当客户端加入时,我收到此错误:

[Netcode] NetworkPrefab hash was not found! In-Scene placed NetworkObject soft synchronization failure for Hash: 3312273862!

它指的是我的播放器预制件表现正常(除了目标)...... 我的播放器预制件位于网络管理器的播放器预制件插槽中,并且也位于附加到网络管理器的网络预制件列表中。这个我不太懂,不过好像没什么害处...

感谢您的时间和宝贵的帮助! 祝你有美好的一天:)

unity-game-engine multiplayer
1个回答
0
投票

尝试在第二台机器上运行客户端

客户端与主机的连接

在主机上在终端/命令提示符下运行

ipconfig

然后在该命令的输出中查找

IPv4 Address

在我的示例中,值为

192.168.1.99

在客户端游戏上使用此值,使用该值而不是

localhost
127.0.0.1

连接到主机
© www.soinside.com 2019 - 2024. All rights reserved.