C# 摄影机跟随实例化光子多人游戏机

C# 摄影机跟随实例化光子多人游戏机,c#,unity3d,photon,C#,Unity3d,Photon,我将此脚本连接到我的相机: public class CameraFollow : MonoBehaviour { public Transform target; public float smoothSpeed = 0.125f; public Vector3 offset; private void Start() { target = ? } private void LateUpdate()

我将此脚本连接到我的相机:

public class CameraFollow : MonoBehaviour {

    public Transform target;

    public float smoothSpeed = 0.125f;
    public Vector3 offset;

    private void Start()
    {
        target = ?        
    }

    private void LateUpdate()
    {
        transform.position = target.position + offset;
    }
}
因为我的播放器是实例化的,所以我不能将预置拖动到公共目标。 我可以在Start函数中键入什么,然后将目标设置为我的实例化播放器。它的标签是“阿凡达”


我使用的是PhotonNetwork,所以我将在一个房间里有几个播放器。

一种方法是将
Start()
修改为:

private void Start()
{
    GameObject[] players = GameObject.FindAllGameObjectsWithTag("Avatar");
    foreach (GameObject player in players)
    {
        if (PhotonView.Get(player).isMine)
        {
            this.target = player.transform;
            break;
        }
    }
}
假设您的玩家类继承自
Photon.monobhavior
(如果尚未继承的话)


PhotonView.Get(player).isMine检查网络对象是否为您的客户端所有,因此可以区分您的播放器和其他人的播放器。一旦找到了对自己播放器的引用,就可以将其指定为相机的目标。

这将取决于要让相机跟随的播放器。如果是你的玩家而不是其他人的角色,那么将目标设定为你的角色应该很容易。不要在start函数中调用目标,而是等待角色生成。当你的角色产生时,会有一些回调。生成后,可以指定摄影机目标并启动摄影机移动功能。我以前没有使用过光子,但很久以前使用ulink进行了一些联网。我们等待角色生成,并在角色生成后将相机分配给玩家。也用同样的原理制作了观众模式。获取所需的玩家id,获取其游戏对象,并将相机分配给该游戏对象。这样想,相机不一定要跟随任何物体,但也可以保持静止,或者在需要时可以随机分配给场景中的任何物体。我相信光子应该有一些ID和相对的游戏对象,即分配给每个玩家的化身。你可以尝试搜索它,它应该会给你的玩家+该列表中其他连接的玩家。如果没有,那么你应该保留一份已连接玩家的列表并处理连接。你可以查看我打电话时看到的这份文档谢谢!我将调查从PhotonNetwork回拨的信息。