2017-05-07 4 views
2

Est-il possible d'ignorer un objet dans hitTest de SceneKit de sorte que lorsque le rayon hitTest est envoyé, il passe par un objet? Je veux toujours voir les deux objets, je veux juste que le rayon en ignore un autre.Ignorant un objet dans hittest

Here l'image du haut montre comment il fonctionne maintenant, et le fond est ce que je voudrais avoir.

enter image description here

Je pense qu'il serait possible en mettant la sphère à l'autre point de vue, mais je ne pense pas que je pouvais voir l'objet alors.

Répondre

3

lors de l'exécution du test de recherche vous pouvez utiliser l'option SCNHitTestOptionCategoryBitMask pour limiter l'ensemble des noeuds qui sont testés.

nœuds ont une categoryBitMask propriété et seulement ceux pour lesquels la condition suivante est satisfaite participera au test de recherche:

node.categoryBitMask & hitTestOptionCategoryBitMask != 0 
+0

'hitTestOptionCategoryBitMask' n'est pas une API SceneKit. Ceci est juste un espace réservé pour la variable/valeur que vous utiliserez pour la valeur associée à la clé 'SCNHitTestOptionCategoryBitMask' dans le dictionnaire des options de test d'accès. – mnuages

+0

Je ne suis pas sûr si vous avez compris, je veux être capable d'arrêter l'avion, même s'il y a un autre objet entre la caméra et l'avion. Je pense que quand on fait du hittesting, en faisant quelque chose comme si node.categorybitmask == 1 {..} il ne sera tout simplement pas hittest – superman

+0

La formule montre ce que SceneKit fera en interne pour décider si le nœud doit participer au test de hit. Ce n'est pas quelque chose que vous devez faire. La seule chose que vous devez modifier est de définir un masque de bits sur votre plan et de spécifier un masque de bits en tant qu'option lors du test d'impact. – mnuages