Всем привет, как найти высоту части объекта, которая находится в

триггере?(на скрине модель с meshcollider)

11 ответов

19 просмотров

Рейкаст с неба вниз

Misha-Marietta Автор вопроса
Proker Kusaka
Рейкаст с неба вниз

Рил, спасибо, не додумался

Привет! Я могу помочь тебе с этим вопросом! Для того, чтобы найти высоту части объекта, которая находится в триггере, необходимо выполнить несколько шагов: 1. Получить список всех объектов, находящихся в триггере. Для этого можно использовать метод Collider.GetContacts(). 2. Выбрать нужный объект из списка. 3. Получить координаты объекта в мировой системе координат. Для этого можно использовать свойство Transform.position. 4. Получить высоту объекта. Если объект имеет компонент MeshFilter, можно использовать свойство Mesh.bounds.size.y. Если объект не имеет компонента MeshFilter, можно использовать свойство Collider.bounds.size.y. 5. Вычислить высоту части объекта, находящейся в триггере. Для этого необходимо вычесть из высоты объекта координату Y его нижней точки, полученную из свойства Collider.bounds.min.y. Ниже приведен пример кода на языке C#, который реализует описанный алгоритм: void OnTriggerStay(Collider other) { // Получаем список контактов ContactPoint[] contacts = other.GetContacts(); // Выбираем нужный объект GameObject target = contacts[0].otherCollider.gameObject; // Получаем координаты объекта в мировой системе координат Vector3 position = target.transform.position; // Получаем высоту объекта float height; if (target.TryGetComponent<MeshFilter>(out MeshFilter meshFilter)) { height = meshFilter.mesh.bounds.size.y; } else { height = target.GetComponent<Collider>().bounds.size.y; } // Вычисляем высоту части объекта, находящейся в триггере float heightInTrigger = position.y - other.bounds.min.y; // Выводим результат Debug.Log("Высота части объекта в триггере: " + heightInTrigger); } Надеюсь, это поможет тебе решить твою задачу! Если у тебя есть какие-либо вопросы, не стесняйся задавать их мне!

Misha Marietta
Да мне chatgpt также писал

Зачем доматываться до меша, когда можно просто с верхней точки персонажа пускать луч вперед на радиус игрока+ еще немного, если луч никуда не уперся, то пускаем 2 луч от той точки в которую пускали 1 луч вниз, и получаем координату по Y разница между координатой Y игрока и координатой Y хита второго луча и будет высотой твоего объекта

Misha-Marietta Автор вопроса
Никита
Зачем доматываться до меша, когда можно просто с в...

Я мне уже ответили также, я уже сделал, сейчас с анимацией разбираюсь, спасибо

Похожие вопросы

Обсуждают сегодня

Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
всем привет помогите пожалуйста используя CDN (GCP) у игроков из вьетнама загружается конфиг (размер 999 bytes) загружается 5 и более минут н а других CDN сервисах такой пробл...
Andrew Krw.
1
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
Просто по очереди выпиливаешь на ручной маппинг? По методу за раз
Andrii Kurdiumov
7
И? Все равно глазами проверять надо каждое поле
Andrii Kurdiumov
4
Ну есть у нас десяток компаний которым надо. Остальным то зачем?
Andrii Kurdiumov
4
что значит рваность? фргаментированость?? для лох эт нормальное состояние. там сжатие редкое явление
Mikhail Lomonosov
1
Приветствую. А не подскажете какие ограничения есть на использования api метода setMyName ? Несколько раз сменил имя бота и получил бан на 2 месяца на смену имени.
Slick Slack
8
Всем привет! Взялся портировать модули на 18 версию, лезет _logger.log(log_level, 'no translation language detected, skipping translation %s', frame, stack_info=True) А чт...
Max Lit
3
Доброе утро, а кто то делал Google аналитику через php ? curl_setopt($ch, CURLOPT_NOSIGNAL, true); Это должно быть async без ожидания ответа. Вообще php нормально с таким с...
Max Dubovsky
9
Карта сайта