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