2016-07-18 4 views
0

L'image ci-jointe est un masque de "walkable space" pour un jeu, qui est peint par le joueur, et pourrait donc être n'importe quoi. J'ai besoin de créer des collisionneurs qui empêchent le joueur de marcher sur les parties bleues du masque (eau). Le jeu lui-même est dans l'espace 3D, le masque est pour les textures de terrain (Unreal Engine 4). Ce que j'ai fait à l'heure actuelle est de réduire la taille de la texture de 2048x2048 à 256x256 et je crée un collisionneur dans l'espace 3D pour chaque pixel bleu dans le masque. Cela fonctionne bien avec de petites quantités de pixels bleus, mais ça ne marchera pas du tout, s'il y a beaucoup de pixels bleus (eau). Il y aurait trop de collisionneurs pour se reproduire à la volée.Comment trouver plusieurs formes concaves et convexes dans une image

Et donc je suppose que la seule autre option est de trouver des points qui constituent les limites de n'importe quel nombre de formes concaves dans l'image. Avec lequel je vais créer des collisionneurs muraux.

Espérons que cela a du sens. Toute aide est fortement appréciée.

Merci enter image description here

Répondre

1

Après avoir réduit la taille à quelque chose de plus petit, remplir un tableau de bool avec zéros et des uns, ceux où il est bleu, et des zéros, où il n'y a pas. De là, vous pouvez transformer tous ceux qui n'ont pas de voisin zéro en zéros. C'est parce que si une cellule n'a pas de voisins vides et qu'elle n'est pas vide elle-même, aucun objet ne peut entrer en collision avec elle et vous n'avez pas besoin de vérifier. Cela devrait grandement améliorer les performances, mais si vous avez besoin de plus, vous pouvez alors trouver toutes les lignes droites de cellules remplies et vérifier les collisions avec celles-ci. Donc, il ressemblerait à quelque chose comme ceci:

enter image description here

Dans ce cas, vous finissez par avoir à vérifier les collisions avec 6 objets au lieu de 18 avec et est la différence qui plus que les blobs deviennent plus grands.

+0

Merci pour votre suggestion, je l'apprécie vraiment. Je vais l'implémenter et voir comment ça fonctionne! – Dann

+0

@Dann Eh bien, comment cela s'est-il passé? – indjev99