我正在为我和我的朋友们制作一个小游戏。我正在使用 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!
它指的是我的播放器预制件表现正常(除了目标)...... 我的播放器预制件位于网络管理器的播放器预制件插槽中,并且也位于附加到网络管理器的网络预制件列表中。这个我不太懂,不过好像没什么害处...
感谢您的时间和宝贵的帮助! 祝你有美好的一天:)