A-Frame Trigger функция JavaScript при столкновении с камерой - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь активировать функцию оценки, когда камера сталкивается или касается объекта, подобного:

<a-entity id="rock" static-body obj-model="obj:models/rock_mesh.obj;mtl:images/rock_mesh.mtl" rotation="0 90 0" position="7.30242379045994 0.3 0">
     </a-entity>

Я записываю текст на мою камеру:

 <a-text id="score" value="0" position="-0.2 -0.5 -1" color="red" width="5" anchor="left"></a-text>

И пытается вызвать такую ​​функцию:

let score = 0;
score = score + 1
$("#score").setAttribute('text','value','Score '+score)

Это всего лишь набросок кода, я все еще новичок в javascript

Как я могу это сделать? Увеличивать счет на экране всякий раз, когда моя камера касается этого "каменного" объекта?

Как я могу обнаружить столкновение или касание с объектом и моей камерой?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Простейшим способом обнаружения коллизий будет обнаружение, если ТРИ ограничивающие рамки перекрываются

Вы можете использовать Ngo Kevins aabb-коллайдер , который излучает hitstart при столкновении. Помните, что у камеры нет собственной геометрии:

<a-camera foo geometry="primitive: box" aabb-collider="objects: a-box"></a-camera>
<a-box scale="2 2 2" class="box" color="blue" position="0 1.6 -5" ></a-box>

с foo, являющимся простым слушателем событий для hitstart.

AFRAME.registerComponent("foo", {
  init: function() {
     this.el.addEventListener("hitstart", (e)=>{
         // Collision ! increment the score
     })
  }
})

Скрипка здесь .

Если возможно, я бы не обнаруживал столкновения с вашей моделью, но создал бы несколько коллизий.


Стоит также упомянуть, что если вы захотите использовать физический движок в своем проекте, физическая система Don McCurdys также позволяет обнаружение столкновений . Вместо hitstart вам нужно будет прослушать collision.

0 голосов
/ 11 ноября 2018

Просто сделайте это:

score++;
$("#score").attr("value", score);
...