我正在使用网络统一制作多人游戏。它使用网络管理器,网络管理器HUD和网络标识。当我更多地了解团结时,可能会有更多的组件。问题是,在我的播放器对象通过网络管理器产生之前,主摄像机会在菜单中产生。因此,lookAt变量未正确分配。播放器生成后,我想通过相机脚本或播放器脚本进行分配。问题是,启动和运行游戏时,游戏中将有4个玩家预制件和4个主摄像头。我尝试过的所有操作都只是重新分配了相机的所有lookAt变量。如何仅将本地摄像机的lookAt分配给本地播放器?
答案 0 :(得分:1)
不要对每个玩家都使用主摄像机,在任何给定时间,场景中始终应该只有1个主摄像机处于活动状态(因此称为“ 主”摄像机)。因此,如果您尝试拨打Camera.Main
,则它将呼叫所有主要摄像机,而不仅仅是播放器。
我认为,实现所需目标的最佳方法是制作一台摄像机的预制件(不是标记为MainCamera
的 并放入您的摄像机脚本(如果有的话)或您希望在该预制件上的相机上使用的其他任何组件。
然后,当播放器生成时,您会实例化预制件,以单独为该播放器创建相机预制件的实例,并且仅在该播放器的实例相机上使用LookAt
类似于以下内容:
public GameObject cameraPrefab; //prefab of the camera you want to instance
private Camera playerCam; //this is gonna be a reference to the camera that looks at the player
void SpawnPlayer()
{
playerCam = Instantiate(cameraPrefab).GetComponent<Camera>(); //instantiate the cameraPrefab and get the camera component of it
playerCam.transform.LookAt(transform); //get the transform of the instanced camera to look at the transform on which this script is run (In this case assuming your player)
}