2016-12-09 2 views
0

Im Gruppierung <a-box> 'es mit einem <a-entity> Wrapper.
Dann verwende ich die Cursor-Komponente in der <scene> und versuchen, einzelne Objekte, die die <a-entity> Wrapper bilden, auswählen/wählen, aber nur Wrapper <a-entity> wird ausgewählt, nicht die einzelnen Objekte.A-Frame (VR) Kommissionierung von verschachtelten Einheiten

Ich bin wirklich neugierig. Ich schaute auf den gesamten Cursor (https://aframe.io/docs/0.2.0/components/cursor.html) Dokumente, und es gibt keine spezifische Erwähnung dieses Szenarios. Es erwähnt, dass racycaster (https://aframe.io/docs/0.2.0/components/raycaster.html) Cursor die erste Entität verwendet, die sich mit dem projizierten Strahl schneidet ... das wäre die gruppierte Einheit ... also immer wieder macht es Sinn.

alles funktioniert gut, wenn alle <a-box> sind an die globale <a-scene> angeschlossen, und sie können einzeln ausgewählt werden.

Kann ich richtig annehmen, dass die Kommissionierung nur dann korrekt funktioniert, wenn das betreffende Objekt eine globale Entität ist (keine verschachtelte)?

Antwort

0

Nicht genau. Sie können der Cursor-Entität eine raycaster Komponente hinzufügen. und legen Sie bestimmte Objekte fest, die Sie auswählen möchten. Sie können diese Frage sehen, die ich vor how to set “objects” property in aframe raycaster component fragte.

+0

Ich habe das schon versucht, es funktioniert nicht ... . Alle Objekte, die ich auswählbar haben möchte, haben eine "v3d_cube" -Klasse hinzugefügt – deepblue

+0

Ich modifizierte 'racycaster' Komponente Quellcode, wie diese' '' init: function() { this.direction = new THREE.Vector3() ; this.intersectefsEls = []; this.objects = []; this.prevCheckTime = undefiniert; this.raycaster = new THREE.Raycaster(); this.updateOriginDirection(); }, '' ' –

+0

Sorry, ich kann meinen letzten Kommentar nicht bearbeiten. und ich habe die "refreshObjects" -Funktion von racycaster component geändert, notierte "this.objects = []' in Zeile 58521. Dann registrierte ich eine 'update-racy- cater'-Komponente. Code ist 'AFRAME.registerComponent ('update-Raycaster', { schema: {type: 'Selektor'}, init: function() { var raycasterEl = this.data; raycasterEl.components.raycaster.data. objects = "#" + this.el.id; racycasterEl.components.raycaster.refreshObjects(); } }); '. Fügen Sie diese 'update-racycaster =" # cursor "' Komponente zu der Entität hinzu, die Sie auswählen möchten. Entschuldigung für mein Englisch. Wünschte, dass meine Worte nützlich sind –