权限确认 - scutrobotlab/RM2021_simulation GitHub Wiki

在 Mirror 网络框架中,每一个登录到服务器的玩家称为 Player,每一个玩家对应的游戏人物称为 Player Game Object。也就是说,游戏玩家和玩家对应的人物是不同的实体,在玩家开始操控人物之前,需要在他们之间建立对应关系。一个玩家可能控制多个实体,一个实体也可以被多个玩家控制(无人机就是典型例子)。

2021 赛季模拟器中,玩家登录模拟器后会进入准备大厅。在这里,每个玩家选择自己控制的角色。在所有玩家准备好后,游戏开始,所有玩家切换到游戏场景,此时建立对应关系等过程开始。首先,RoomManager 会根据玩家选择的角色,为每个玩家生成对应机器人。Mirror 框架会将所有生成的 GameObject 同步到每个客户端。

节选自 Networking/RoomManager.cs

机器人生成后,每个客户端等玩家实体会寻找符合本地玩家角色的机器人,并设置权限标志,表示此机器人由本地玩家控制。后续机器人上的控制器脚本接收本地输入后,就根据这个权限标志来确认是否需要进行控制操作。

节选自 Networking/GamePlayer.cs

节选自 Controller/GroundControllerBase.cs

云台手与飞手两个用户共同控制一台机器人,2021 模拟器的实现是修改无人机控制器,使其能进行两次权限确认,机身和云台分别属于两个用户,分别进行控制。无人机整体从属于飞手,所以只有本队有飞手,云台手角色才能被选择。

⚠️ **GitHub.com Fallback** ⚠️