【问题标题】:Unity: Individual Camera in MultiplayerUnity:多人游戏中的单个摄像机
【发布时间】:2013-06-17 14:56:45
【问题描述】:

我已经在 Unity 中工作了一段时间,并且通过遵循 this 教程获得了基本的多人游戏设置。但是,我想添加更多的东西,其中之一是跟随每个玩家的相机。我已经查过了,甚至发现了该教程的创建者的评论。所以我按照他的解释,得到了这个代码:

function spawnPlayer(){
    var player:GameObject=Network.Instantiate(playerPrefab,spawnObject.position,Quaternion.identity,0);
    Destroy(Camera.main);
    if(player.networkView.isMine){
       var playercam:Transform=player.transform.find("Camera");
       playercam.tag="MainCamera";
    }
}

我忘了说,玩家对象有一个相机,它被选为“playerPrefab”游戏对象。

这种工作,但不是真的。当我启动服务器时,相机会很好地跟随你。但是,当我打开另一个文件并加入该主机时,我开始觉得很奇怪。奇怪,我的意思是当我在服务器游戏中移动时,相机会跟随客户端游戏中的服务器玩家,而当我在客户端游戏中移动时,相机会跟随服务器游戏中的客户端。对我来说这毫无意义。

感谢任何人对此问题的意见,或者如何解决它。谢谢

【问题讨论】:

  • 您只想制作一个摄像头,不要在播放器预制件中包含摄像头。我认为您创建了太多相机。
  • 所以如果我不给玩家一个摄像头,我该怎么处理主摄像头才能让它跟随玩家
  • 附加一个脚本,强制相机跟随正确的玩家对象。
  • 是的,我在想,就像每个客户一样,相机会跟随最后一个玩家加入...但是我不知道如何获取某个对象的实例数,并且选择一个特定的。
  • @JeremyDarrach 我认为这里存在脱节。谁打电话给SpawnPlayer,是服务器还是客户端?如果是客户端,您可以跳过 isMine ,直接获取主摄像头。如果是服务器,那么您需要将 Network.Instantiate 下的所有内容移动到附加到播放器预制件的脚本上的 MonoBehaviour.OnNetworkIsInstantiate

标签: unity3d multiplayer


【解决方案1】:

您的代码不完整:由于预制件本身有一个摄像头,因此您必须继续 if(player.networkView.isMine) 添加一个 else 子句来销毁摄像头,以防您只是生成远程玩家的图像。

【讨论】:

    猜你喜欢
    • 2017-03-09
    • 2022-01-15
    • 2021-09-29
    • 1970-01-01
    • 2019-08-05
    • 2016-10-26
    • 1970-01-01
    • 2022-08-07
    • 2021-12-06
    相关资源
    最近更新 更多