Это можно считать проблемой анимации. Если коррекция положения возвращается с сервера из-за попытки переместиться в невидимый объект, отправьте обратно не только исправление, но и флаг, указывающий, почему исправление было необходимо. Вместо того, чтобы игрок швырялся назад, он может делать «вау», покачивая анимацию назад, делая его более правдоподобным, как будто он просто наткнулся на что-то.
В играх, использующих этот подход, нередко удаляют невидимость (по крайней мере на мгновение) из всего, с чем сталкивались. Среди прочего, это дает стимул невидимым игрокам избегать скопления людей или сближения с другими персонажами, снижая частоту столкновений с невидимым игроком в первую очередь. Таким образом, даже если ваша анимация для такого рода столкновений слаба (или вообще отсутствует), она несколько скрыта от невидимого персонажа, который появляется в поле зрения и ясно передает всем, что только что произошло.
Анимацию нужно убрать, не позволяя невидимости работать с близкого расстояния. Это дает еще больший стимул невидимым игрокам избегать сближения с другими персонажами. Это обычный подход для стелс-игр и ИИ (замените «невидимый» на «невидимый для цели») и его можно увидеть в PvP-играх, таких как World of Tanks. Не нужно беспокоиться о реакции на столкновение с невидимыми символами, если у вас нет ничего невидимого, когда вы находитесь достаточно близко, чтобы столкнуться с ним (в пределах задержки).
Решение Дракора просто игнорировать столкновения с невидимыми объектами также является хорошим решением. Это снова требует некоторой анимации (для клиента невидимых игроков), поэтому объекты не просто просматривают аватар игрока на его экране. Если ничего другого, вы можете заставить видимые объекты всегда выдвигать невидимые, так что невидимый игрок автоматически удаляется с сервера, если кто-то сталкивается с ним.
Невидимые-невидимые столкновения немного сложнее. Может быть выгодно просто отключить коллизии на них, так как никто не может видеть, обрезаются ли два невидимых объекта (под «невидимым» мы подразумеваем, что оба объекта не видимы для одного и того же клиента). Если один из объектов становится видимым, он автоматически возвращается к реакции видимого-невидимого столкновения (отталкивает невидимый объект).
Все становится сложнее, если невидимость имеет сложные наборы того, кто кого может видеть. Первое или второе решение выше, вероятно, лучше всего здесь, если вам это нужно. Не каждая такая проблема нуждается в техническом решении; многим просто нужны дизайнерские решения (например, не позволяйте этой функции вашим дизайнерам).