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

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

11 ответов

14 просмотров

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

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 Автор вопроса
Никита
Зачем доматываться до меша, когда можно просто с в...

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

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

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

Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
с помощью чего можно бота добавить как админа в чат? (условно в боте есть кнопка, нажатие на которую приводит тебя к выбору чата и выдаче прав боту)
ηє νєямσяє
5
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Добрый день, подскажите как правильно сделать filter в backend-e. Есть модель (товар) у который связь belongsToMany (компания), компаний > 4k, поэтому выборку типа ->all(); н...
Max Dubovsky
7
А как заставить поиск искать? Есть такая формочка <select class="form-control custom-select" name="brand_id" data-handler="onGetBrands"></select>
Денис Александрович
5
А цены чем оправданы?
Lencore
7
Каким то образом можно определить ширину экрана пользователя перед загрузкой partial-а? Надо рассчитать ширину кадров слайдера для ресайза картинок для container-fluid.
Point 111
22
напомните, как заменить placeholder , а не добавить содержимое ?
Artem N
4
Карта сайта