我正在玩多人游戏的汽车游戏。 一切正常,主人和客户都很好地连接到房间。 (我一直在使用马可波罗教程) 问题是当我看到其他车辆在屏幕上移动时,通过传送汽车来更新位置。一直出现和消失。
我的部分代码:
PhotonNetwork.automaticallySyncScene = false;
public class CNPlayerManager : Photon.MonoBehaviour
{
...
void FixedUpdate()
{
if (photonView.isMine)
{
//it works fine
}
else
{
transform.position= Vector3.Lerp(transform.position, this.correctPosition, Time.deltaTime * 5);
transform.rotation= Quaternion.Lerp(transform.rotation, this.correctRotation, Time.deltaTime * 5);
}
}
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.isWriting)
{
stream.SendNext(transform.position);
stream.SendNext(transform.rotation);
}
else
{
this.correctPosition = (Vector3)stream.ReceiveNext(); //Line 100
this.correctRotation = (Quaternion)stream.ReceiveNext(); //Line 101
}
}
我的汽车预制件中的PhotonView是这样的:但在我的Photon版本中我有更多选择。在所有者中我有“设置在运行时”和“固定”。在“观察到的组件”中,我有2个组件,我的汽车预制件和脚本CNPlayerManager。
当我玩2辆车时,在第一辆车中我有时会收到此错误:“IndexOutOfRangeException:数组索引超出范围.PhotonStream.ReceiveNext()...”在第100行。 在第二辆车中,我得到了同样的结果。
你能帮我吗?
答案 0 :(得分:0)
但是我建议你看看PUN包中已经包含的脚本,特别是PhotonTransformView脚本。这个可以实现您想要实现的目标,并提供一些同步选项,您可以检查哪个,并查看哪个最适合您的需求。
如果您仍然遇到问题,请告诉我们。