Pawn
阅读
2023-07-24更新
最新编辑:TrimesS_
阅读:
更新日期:2023-07-24
最新编辑:TrimesS_
什么是Pawn?
Pawn是任何客户端(玩家)都可以拥有的实体,它是玩家在世界中的物理代表。这个实体不需要是任何特定的东西,你可以让它成为一个物理对象或一个传统的动画玩家。
当客户端持有一个Pawn时,以下的函数都会在实体上激活:
- Entity.Simulate( Client ) - 服务器端和客户端的每个 tick 都会进行预测。
- Entity.FrameSimulate( Client ) - 仅在客户端每帧(Frame)调用,以模拟需要每帧(Frame)更新的内容。
- Entity.BuildInput() - 每帧在客户端上调用,以处理Pawn的输入。更多信息请点击此处。
设置客户端的Pawn
你可以在任何时候设置客户端的Pawn,标准的设置位置是客户端首次加入时。
/// <summary>
/// 有客户端加入服务器。让他们成为Pawn
/// </summary>
public override void ClientJoined( IClient client )
{
base.ClientJoined( client );
var player = new MinimalPlayer();
client.Pawn = player;
player.Respawn();
}
访问每个Pawn
获取游戏中所有Pawn的最优解是遍历所有客户端并访问它们的Pawn:
// 遍历每个客户端
foreach ( var client in Client.All )
{
// 始终检查是否分配了Pawn,以及Pawn类型是否正确
if ( client.Pawn is not MyPawn pawn )
continue;
pawn.Respawn();
}
任何时候,您都可以通过 Game.LocalPawn 访问客户端的棋子:
public class MyHealth : Panel
{
Label healthLabel;
public override void Tick()
{
healthLabel.Text = $"Health: {Game.LocalPawn.Health}";
}
}