在Unity3D中处理多人游戏。和其他许多人一样,我有一些严重的问题让相机跟随玩家。在普通游戏中,您只需将相机对象作为播放器对象的子对象,以使其跟随播放器。在多人游戏中,这不是玩家需要产卵的选项(预制)。需要帮助让相机跟随实例化的游戏对象(玩家)
因此,您需要使用C#使相机跟随使用播放器对象变换位置的播放器。这是我试过的:
public Transform target;
public float smoothing = 5f;
Vector3 offset;
public GameObject playerPrefab;
private void SpawnPlayer()
{
Network.Instantiate(playerPrefab, Vector3.up * 5, Quaternion.identity, 0);
offset = transform.position - target.position;
}
void LateUpdate()
{
Vector3 targetCamPos = target.position + offset;
transform.position = Vector3.Lerp(transform.position, targetCamPos, smoothing * Time.deltaTime);
}
Ofcourse我已经分配玩家预制的目标。所以当游戏开始时,摄像头的位置会变成玩家的位置。但之后,它拒绝跟随玩家。它只是坐在那里。
所以我已经开始与调试这样的:
Debug.log(target.position);
它返回玩家的起始位置,但作为球员来回移动时没有更新。它仍然是一样的。这显然是相机不会跟随玩家的原因。
问题是:为什么玩家位置没有得到更新?或者最有可能的,但脚本没有看到它。我究竟做错了什么?
我不确定,但你似乎通过Instantiate方法实例化播放器。但是目标没有被赋予玩家的转换。什么是目标? – Everts
@fafase通过将玩家预制向其拖动,可以在Unity内分配目标。你在代码中看不到。 – icecub