Я работаю над игрой от первого лица и столкнулся с проблемой. В моей игре есть рендеринг оружия игрока, а также сетка в центре экрана - вот так:
Во-первых, давайте представим, что не было никакой модели пистолета. Тогда стрелять из пули легко - вы просто создаете пулю точно там, где находятся «глаза» игрока, и затем используете триггер, чтобы вычислить скорость, основываясь на том направлении, в котором смотрит игрок.
Но теперь, когда мы добавляем модель оружия ... мы не можем просто создать пулю там, где находятся глаза игроков, мы должны создать ее на кончике пистолета (верно?). Итак, вы делаете это, но потом ... как вы перемещаете пулю так, чтобы она ударила туда, куда указывал прицел?
Имейте в виду, что пуля в моей игре (в данном случае это ракета) будет двигаться достаточно медленно, чтобы можно было увидеть ее движение, поэтому некоторые обходные пути, которые обычно работают, если пуля слишком быстрая, чтобы ее можно было наблюдать, не будут работать , Например, если вы не породили его, и похоже, что он выходит из кончика пистолета, игрок наверняка это заметит.
Ответы:
Снимите луч из камеры через центр / сетку в мир. Узнайте, где в мире это бьет. Стреляйте из пули в ствол пистолета в этой точке, а не прямо из пистолета.
Бонусные баллы за анимацию рук и пистолета, чтобы указывать в этом направлении, прицеливаясь вокруг так, чтобы пуля все еще выглядела так, как будто она стреляет прямо из морды, а не выходит под углом.
Если вы делаете анимацию, вы можете просто выстрелить прямо из морды. Просто приложите все усилия, чтобы пистолет направил точку, на которую направлена прицельная сетка, в разумных пределах. Также полезно иметь две прицельные сетки таким образом, чтобы они, естественно, отображали центр экрана, на который пытается нацелиться игрок, и точку, на которую фактически нацелено оружие.
Или вы можете показать одну прицельную сетку, по которой пушка будет нацеливаться после завершения анимации, и стрелять пулей в этом направлении, а не в то место, куда в данный момент прицеливается пушка в анимации. Таким образом, прицельная сетка всегда показывает, что игрок действительно ударит, но не будет притворяться, что вы можете, например, стрелять вокруг стены только потому, что камера видит то, чего пистолет не может сделать.
Все они были использованы в реальных играх. То, что вы предпочитаете, зависит от стиля игры, которую вы делаете, от компромисса между симуляцией и игрой, к которой вы стремитесь, будь то мультиплеер или нет, и т. Д.
источник
Как насчет избавления от сетки? Тогда пули могли идти по прямой от пистолета, как в реальности. Тогда прицеливание будет означать больше, если вы выровняете цель и ствол пистолета (минус несколько дюймов у модели игрока).
источник