Здесь есть хорошие ответы. Я должен был сам разобраться в проекте, над которым я работаю, но пришел к тем же выводам, что и ребята из Sucker Punch (и я подумал, что придумал что-то новое. Baww :().
Я считаю полезным рассматривать вашу панораму 360x180 градусов от первого лица как «поле ускорения». Все действительные цели создают гравитационные лунки, которые изгибают входные данные игрока (только тонкие) так, что макросъемка (поворачиваясь лицом к целям) кажется, что это «смазанный» путь. Тем не менее, это не влияет на перекрестие все время - только когда дельта хода игрока указана с уклоном колодца (как это было). Это действительно ключевой момент - вы даете эту дополнительную скорость поворота только тогда, когда игрок грубо поворачивается к цели. Это единственный вывод, который вы можете сделать из ввода игрока.
Гораздо больше, и вы получаете слишком много заметного "эффекта ouija". Вам нужна полная противоположность ouija: когда доска ouija движется неосознанно благодаря пользователю, без его сознательного знания, вы хотите, чтобы перекрестие игроков двигалось разумным образом, не осознавая, что это НЕ просто их ввод. Это действительно волшебная уловка.
Используйте точечное произведение дельты поворота / тангажа игрока против дельты тангажа / рыскания от перекрестия к каждой цели. Зафиксируйте значение от 0 до максимальной скорости (чтобы вы игнорировали вход, отталкиваясь от цели), затем используйте функцию расстояния в качестве модификатора спада.
Я обнаружил, что увеличение этого бонуса "макроперемещения", когда угловая дельта перекрестия против цели велика (то есть когда враг находится позади вас), действительно помогает решить проблему классического контроллера консоли, заключающуюся в том, что он не может поворачиваться лицом к лицу достаточно быстро. С точки зрения «выбора цели», если на вас нападают сзади, и перед вами нет целей, эта панорама перед вами - «мертвое пространство», и вы также можете дать игроку возможность летать через нее. на большой скорости с их курсором. И если есть цели впереди, ну, они, вероятно, выше в сознании игрока и из-за ослабления / липкой цели не слишком подвержены влиянию слабой макро-силы.
Вам не нужно сильно ослаблять чувствительность, когда игрок пытается отвернуться
от объекта (это приведет к ощущению попытки «вырваться» из орбиты цели). Демпфирование используется в большей степени для точного прицеливания, а также для предотвращения превышения цели игроками при переходе от макро-к микро-точности - это самая ужасная вещь: игроки (особенно новички) имеют тенденцию использовать только крайние значения отклонения палки, поэтому сделать много ловли для них.
Липкая цель - компенсатор относительного движения. Следите за разницей между углом к цели (от камеры, а не от источника), этим кадром и последним кадром. Посмотрите, как близко вы стремитесь к цели. Чтобы избежать эффекта ouija при отсутствии пользовательского ввода, проверьте отклонение обеих палочек: посмотрите, двигались ли вы физически (активация левой рукоятки) ИЛИ, если есть активное прицеливание «с» направлением цели. Добавьте шаг дельты рыскания / тангажа * близость цели * Макс (длина хода, цель / длина) для элементарной липкой цели.
Там, где возникает проблема путаницы целей (то есть цель попадает на ваш взгляд, когда вы нацеливались на что-то позади, «крадя» свой фокус), просто отслеживайте свои цели и «нагревайте» одну, пока она активно направлены на Затем умножьте демпфирующие и липкие компоненты на этот тепловой параметр, чтобы не нагретые цели игнорировались. Если игрок ХОЧЕТ помощь по этой другой цели, он будет вручную стремиться к ней, и очень быстро, она станет наиболее заметно нагретой целью, в то время как предыдущая будет забыта.
Мы также создаем «призрачные» цели для прицеливания, чтобы помочь вам отворачиваться от неинтересных вещей (например, лицом к стене - не нужно торчать, глядя на близко расположенную пустую поверхность, если она бесполезно интерактивна), но это, вероятно, больше, чем я могу говорить о - вы можете применить этот материал ко всему, на что игроку будет интересно указывать, будь то взрывные бочки, интерактивные объекты (биошок использует демпфирование при наведении на интерактивные объекты с близкого расстояния ... но не прицеливается на них, Я не думаю). Как только вы поймете, что это все лишь для того, чтобы дополнить основную концепцию прицеливания, вы поймете, что речь идет не только о прицельных выстрелах, но и об общем удобстве использования, которое вписывается в любой механизм, зависящий от прицеливания. И в FPS, действительно,
Важная вещь со всем этим - тюнинг. Требуется много времени, чтобы просто разобраться и справиться с помехами цели, и проблемы с целями, находящимися на таком близком расстоянии, что их «зоны цели» затопляют панораму игрока, замедляя 60 градусов вращения до ползания.
О, мужик, мне пора спать. Извините, если некоторые из математики не очистить. Уже поздно, но я был взволнован, читая этот пост.