Я создаю игру для третьего лица, в которой игрок является вертолетом, и он может стрелять в другие объекты во время движения. Проблема в том, что я пытаюсь найти объекты противника, которые находятся внутри круга в центре камеры, и мне нужно отслеживать их и стрелять в них.Столкновение Обнаружение объектов в определенной области камеры в Unity3d
Raycast не поможет, поскольку мне нужен более толстый raycast, и поэтому я попробовал сферический и капсулирующий. У меня есть элемент GUI, который дает игроку представление о том, где он может стрелять. При использовании Spherecast или Capsulecast, он работает, когда враг близок, но когда враг находится далеко позади, я думаю, что сферический каток становится маленьким при движении по z и не делает Лучше всего поражать объект.
if (Physics.SphereCast (startPoint, 1f, transform.forward, out hit)) {
if (hit.collider.CompareTag ("Shootable")){
Debug.Log(hit.collider.name);
Destroy(hit.collider.gameObject);
}
}
Я видел raycast из камеры и поэтому мне было интересно, если есть что-то делать, как circlecast с камеры, которая была бы подходящей для этого. Если нет, то как я могу продолжить?
Любая помощь действительно оценена.
Если вы хотите обнаружить врагов, находящихся внутри конической области в окне просмотра вашей камеры, вместо использования сферы/raycast, вы можете попробовать проверить угол позиции врага относительно передней части камеры вектор. (Взято из [этого единственного ответа] (http://answers.unity3d.com/questions/261539/how-to-make-a-raycast-have-a-waider-range-of-hit.html).) – Serlite
Спасибо за ответ. Чтобы сделать это, мы должны пропустить все враги, видимые в камере. Если у меня много врагов на сцене ... это не повлияет на производительность, так как я должен запустить это в обновлении –
Хм, какой порядок составляет ожидаемое/максимальное количество врагов? Вероятно, стоит попробовать, чтобы проверить, действительно ли ваша производительность. – Serlite