Поиск…


Вступление

Компонент raycaster выполняет общее тестирование пересечения с помощью raycaster. Raycasting - метод расширения линии от начала координат к направлению и проверка того, пересекает ли эта линия с другими entites. Компонент raycaster представляет собой обертку поверх трех. Raysaster. Он проверяет пересечения в определенном интервале относительно списка объектов и будет генерировать события на объекте, когда он обнаруживает пересечения или очистку пересечений (т. Е. Когда raycaster больше не

параметры

параметр подробности
далеко Максимальное расстояние, по которому возвращаются результирующие объекты. Не может быть ниже, чем рядом.
интервал Количество миллисекунд, чтобы подождать между каждым тестом пересечения. Более низкое число лучше для более быстрых обновлений. Чем выше число, тем выше производительность.
возле Минимальное расстояние, на которое возвращаются объекты восстановления. Не может быть ниже 0.
объекты Селектор запросов для выбора объектов для проверки пересечения. Если не указано, все объекты будут проверены.
рекурсивный Проверяет всех дочерних объектов, если они установлены. Else проверяет только пересечения с корневыми объектами.

замечания

События

название подробности
raycaster-intersected Исправлено на пересеченной сущности. Сущность пересекается с raycaster. Деталь события будет содержать el, объект raycasting и пересечение, объект, содержащий подробные данные о пересечении.
raycaster-intersected-cleared Исправлено на пересеченной сущности. Сущность больше не пересекается с raycaster. Детальная информация о событии будет содержать эль, объект raycasting.
raycaster-intersection Испускается на суде. Raycaster пересекается с одним или несколькими объектами. Детальная информация о событии будет содержать els, массив с пересекающимися объектами и пересечениями, массив объектов, содержащий подробные данные о пересечениях.
raycaster-intersection-cleared Испускается на суде. Raycaster больше не пересекается с сущностью. Деталь события будет содержать el, ранее пересеченный объект.

член

член Описание
intersectedEls Объекты, которые в настоящее время пересекают raycaster.
objects объекты three.js для проверки пересечений. Будет свойство scene.children if not objects не указано.
raycaster объект tr.js raycaster.

Methode

метод Описание
refreshObjects Обновляет список объектов, основанных на свойстве объектов, для проверки пересечения.

Настройка происхождения и направления Raycaster

Ракастер имеет происхождение, где начинается его луч, и направление, куда направляется луч.

Происхождение raycaster находится в положении лица raycaster. Мы можем изменить происхождение raycaster, установив компонент позиции объекта raycaster (или родительских объектов объекта raycaster).

Направление райкастера находится в «фронте» объекта raycaster (т. Е. 0 0 -1, на отрицательной оси Z). Мы можем изменить направление raycaster, установив компонент вращения объекта raycaster (или родительских объектов объекта raycaster).

Например, здесь применяется рейкастер по длине повернутой пули:

<!-- Bullet, rotated to be parallel with the ground. -->
<a-entity id="bullet" geometry="primitive: cylinder; height: 0.1" rotation="-90 0 0">
  <!-- Raycaster, targets enemies, made to be as long as the bullet, positioned to the start of the bullet, rotated to align with the bullet. -->
  <a-entity raycaster="objects: .enemies; far: 0.1" position="0 -0.5 0" rotation="90 0 0"></a-entity>
</a-entity>

Учет белых объектов для проверки пересечения

Обычно мы не хотим проверять все на сцене для пересечений (например, для коллизий или кликов). Селективные пересечения хороши для производительности, чтобы ограничить количество объектов для проверки на пересечение, поскольку тестирование пересечения - это операция, которая будет выполняться более 60 раз в секунду.

Чтобы выбрать или выбрать объекты, которые мы хотим проверить для пересечения, мы можем использовать свойство objects. Если это свойство не определено, то raycaster проверит каждый объект в сцене для пересечения. объекты принимают значение селектора запросов:

<a-entity raycaster="objects: .clickable" cursor></a-entity>
<a-entity class="clickable" geometry="primitive: box" position="1 0 0"></a-entity>
<a-entity class="not-clickable" geometry="primitive: sphere" position="-1 0 0"></a-entity>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow