历史边界
优化延迟补偿和客户端预测
在前一章中,我们讨论了如何使用延迟补偿来检查玩家过去的碰撞框。
为了最小化性能开销,在我们决定回滚哪些玩家之前,首先对HistoryBounds进行投射可能是有用的。
本质上是一个四维边界框:(x,y,z,time)。 换句话说,一个包含了过去一秒钟左右所有玩家位置的边界框。
使用指南:
将
HistoryCollider组件附加到您的NetworkIdentity上确保您的NetworkIdentity有一个碰撞体,将其拖放到组件的
actualCollider字段中添加一个带有BoxCollider并启用isTrigger的子游戏对象。将其拖放到组件的
boundsCollider中。按下播放,启用Gizmos,注意橙色的HistoryCollider。
该组件会自动调整子触发碰撞体以匹配橙色框,这意味着您可以非常容易地对所有历史碰撞体使用Physics.Raycast。
换句话说:如果一个玩家开枪,做这个:
对所有HistoryColliders进行射线投射,找出需要检查的其他玩家
然后为碰撞体的父NetworkIdentity应用延迟补偿
然后检查是否被击中
最后更新于
这有帮助吗?