History Bounds
Оптимизация для компенсации задержки и прогнозирования на стороне клиента
В предыдущей главе мы обсуждали, как использовать компенсацию задержки для проверки хитбоксов игрока в прошлом.
Чтобы свести к минимуму потери производительности, может быть полезно сначала провести проверку HistoryBounds
, прежде чем мы решим, каких игроков откатывать.
по сути, они представляют собой 4-мерную ограничивающую рамку: (x,y,z,time). Другими словами, ограничивающая рамка, которая содержит все позиции игрока за последнюю секунду или около того.
Руководство по использованию:
Прикрепите
HistoryCollider
компонент к вашему NetworkIdentityУбедитесь что ваш NetworkIdentity имеет коллайдер, перетащите его в поле
actualCollider
Добавьте дочерний GameObject с BoxCollider'ом и включенным isTrigger. Перетащите его в поле
boundsCollider
.Нажмите "play", включите Gizmos, Наблюдайте за оранжевым HistoryCollider'ом.
Компонент автоматически настраивает дочерний триггерный коллайдер в соответствии с оранжевым прямоугольником, что означает, что вы можете использовать Physics.Raycast для обнаружения всех коллайдеров истории очень легко.
Другими словами: если игрок стреляет из пистолета, сделайте это:
Используйте Raycast на все HistoryColliders чтобы узнать, кого из других игроков нам нужно проверить
Затем примените компенсацию запаздывания для родительского коллайдера NetworkIdentity
Затем проверьте, был ли он сбит
Это краткий обзор того, почему существует HistoryCollider и как его использовать. В будущем мы предоставим полноценную демонстрацию FPS со всеми передовыми техниками.
Last updated