Un mur doit-il être créé sous forme d'avion ou de boîte?

22

Quels sont les avantages d'un mur en tant qu'avion ou boîte? Dois-je utiliser un avion avec un collisionneur de boîtes au lieu d'un collisionneur de mailles?

Pichi Wuana
la source

Réponses:

15

Il y aura deux ou trois choses différentes que vous devrez considérer.

Remarque: les avantages des optimisations décrites ci-dessous ne comptent vraiment qu'avec une tonne de murs. À ce stade, il pourrait être judicieux d'envisager une solution différente comme le partitionnement d'espace binaire (BSP) pour créer vos murs dans votre jeu. Cela rendrait vos niveaux hautement optimisés pour le rendu (s'ils sont conçus correctement) et pour la physique (car vous avez une très bonne définition de ce qui entre en collision et de ce qui ne le fait pas).

Le rendu

Une boîte va demander plus de rendu qu'un avion. Il a plus de sommets et de triangles, ce qui signifie que votre vertex shader et le rasterizer devront être exécutés sur plus de données. Par conséquent, n'utilisez une boîte que lorsque vous en avez besoin en termes de visibilité. Retirez les visages au besoin pour ce que le joueur devra voir.

La physique

Vous devriez toujours utiliser un BoxColliderpar opposition à un MeshColliderquand vous le pouvez. MeshColliderLes s doivent appliquer des collisions par face (ou comme coque convexe) du maillage et ralentir le lancer de rayons et la physique (mais c'est une quantité négligeable pour une seule boîte). Une autre chose avec, BoxCollidersc'est qu'il est beaucoup plus difficile pour le joueur de les traverser quand ils vont très vite. Même avec des collisions continues, si vous vous retrouvez toujours avec des choses en phase à travers les murs, vous pouvez toujoursBoxColliders

Productivité

Si vous travaillez beaucoup plus rapidement avec des avions MeshColliders(car vous n'avez pas besoin d'ajuster tous les BoxColliderspour correspondre à leurs dimensions), il peut être judicieux de les utiliser uniquement si vous obtenez les performances souhaitées.

Coburn
la source
10

Développant un peu les points de "Coburn" :

Rendu : si vous rendez le mur uniquement comme un plan, le mur ne sera visible que d'un côté, car le plan (ou plus exactement ses faces) n'a qu'un seul côté rendu. Donc, si le joueur est capable de se déplacer autour du mur, vous aurez besoin de plusieurs avions pour couvrir tous les côtés, ce qui signifie que vous vous retrouvez avec une boîte de toute façon.

Physique : les collisionneurs à géométrie simple (sphères, boîtes, etc.) sont toujours plus rapides à calculer que les collisionneurs à maillage complet, car toutes les faces du maillage ne doivent pas être vérifiées individuellement. Au lieu de cela, des raycasts "simples" peuvent être utilisés ou des calculs de distance (par exemple la distance au centre de la sphère moins la taille de la sphère).

Pour les autres moteurs physiques qui ont un "collisionneur d'avion" séparé (ce qui n'est pas le cas pour Unity), il n'y en a pas de "meilleur". Un avion peut être légèrement plus rapide en termes de performances, mais vous pouvez alors rencontrer le problème des objets rapides qui le traversent sans réellement entrer en collision. Ensuite, vous vous retrouvez avec des collisionneurs plus épais (donc une boîte au lieu d'un avion) ​​ou passez à la détection de collision continue (CCD), comme expliqué ici .

Philip Allgaier
la source
You can almost always turn backface culling off.
Bálint
2
@Bálint True. The user might then see the wall also from the other side although with wrong lighting in that case (light sent by the sources from the other side/room, instead the one he/she is standing in).
Philip Allgaier
In your second point you didn't actually specify whether it is a pro or a con and for what. A plane seems simpler geometrically than a box, so is that your point?
Bakuriu
@Bakuriu As far as I know, Unity does not have a "plane collider", so "box" is the nearest thing. I added a note for other physics engines.
Philip Allgaier
0

I was always told that if u are going to have shadows that its best to make it solid to help with light bleeding because the difference in depth is to small and it will bleed.

Je peux me tromper, mais je fais tous mes murs et des trucs comme ça des deux côtés, un mur ne sera que quelques verts, donc ça ne devrait pas être beaucoup d'économies en ayant un avion.

Il y a certaines choses que je laisse de côté, mais c'est surtout le bas ou le haut des trucs qui ont beaucoup de choses autour pour aider à saigner légèrement.

Je fais de même pour la physique, je n'y ai pas vraiment pensé, mais il me semblait juste d'utiliser un mur comme mur et un avion comme avion mais c'est juste moi

Justin William Stanley Bryant
la source