双关语 2 同步

Posted

技术标签:

【中文标题】双关语 2 同步【英文标题】:Pun 2 Synchronizing 【发布时间】:2021-04-29 00:35:18 【问题描述】:

我使用 pun2(Photon Unity Networking)创建了一个多人游戏,但是当我移动和查看时,我的角色的变化将应用于其他角色,当我的朋友移动时,他们的更改将应用​​于我的角色

void Update()

isGrounded = Physic.CheckSqhere(groundCheck.position,groundDistance, LayeMask);

if (isGrounded && velocity.y<0)

    velocity.y=-1f;


float x = Input.GetAxis("Horizontal");

float z = Input.GetAxis("Vertical");

if (Input.GetButtonDown("Jump") && isGrounded)

    velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);


Vector3 Movement = transform.right * x * transform.forward *z;

if (isGrounded)

    characterController.Move(Movement * speed * Time.deltaTime)

else
    characterController.Move(Movement * speedOnJumping * Time.deltaTime)


velocity.y +=gravity * Time.deltaTime;
characterController.Move(velocity * Time.deltaTime);

void Start()
PhotonNetwork.ConnectUsingsettings();


public override void onConnectedToMaster()
PhotonNetwork. AutomaticallySyncScene = true;
createButton.onclick.AddListener(()=>
    PhotonNetwork.createRoom("Amin's Room");
);

joinButton.onclick.AddListener(()=>
    PhotonNetwork.JoinRoom("Amin'sRoom");
);
base.OnConnectedToMaster();

public override void OnJoinedRoom()
if (PhotonNetwork.IsMasterClient)
    Debug.Log("you are the master");
    PhotonNetwork.LoadLevel(1);

base.OnJoined Room();
   

【问题讨论】:

请将代码包含为格式化文本,而不是屏幕截图。 【参考方案1】:

未来:请将代码添加为TEXT,而不是图片!


在您的Update 方法中,您可以监听全局键盘事件。这些将在该脚本的所有个实例上执行。

您应该检查该组件是否真的属于您自己的播放器,否则忽略它,甚至最好禁用整个组件!

见Photon User Input Management

// Note that inheriting from MonoBehaviourPun instead of MonoBehaviour is mandatory!
public class YourClass : MonoBehaviourPun

    ...

    private void Update()
    
        // As also described in the link the IsConnected is checked in order to allow 
        // offline debugging of your behavior without being in a network session
        if(PhotonNetwork.IsConnected && !photonView.IsMine)
        
            // optional but why keep an Update method running of a script that 
            // shall anyway only be handled by the local player?
            //enabled = false;
            // Or you could even remove the entire component
            //Destroy(this);
    
            // Do nothing else
            return;
        
    
        ...
    

【讨论】:

我用过这个方案,但是现在比我加入晚的玩家可以控制我的角色,我也可以控制他的角色,当房间里有3个人时,最新的玩家可以控制之前的玩家,你能给我一个使用pun2的fps多人游戏示例的链接吗?

以上是关于双关语 2 同步的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch 分布式搜索引擎 -- 数据同步:数据同步思路分析 实现elasticsearch与数据库数据同步

Elasticsearch 分布式搜索引擎 -- 数据同步:数据同步思路分析 实现elasticsearch与数据库数据同步

mysql主从同步-双向同步2

mysql主从同步-双向同步2

2.2.3用同步代码块解决同步方法的弊端

时间同步 ntp