Tout d'abord, je possède Unity Pro.
Je cherche à occlure les lumières lorsqu'elles ne sont pas vues depuis un certain temps maintenant pour améliorer les performances. Les principales méthodes que j'ai rencontrées consistaient à utiliser BecameVisible () et à tester le tronc de la caméra.
Mon principal problème était que si le joueur regarde une zone qui serait éclairée par la lumière, je veux toujours que la lumière soit allumée.
Actuellement, j'utilise une méthode qui vérifie si la zone éclairée se trouve dans le tronc de la caméra, mais le problème est parfois que les lumières sont dans le tronc sans être réellement visibles par le joueur (par exemple, un mur entre eux et le joueur). J'ai essayé de diffuser des rayons avec eux, mais vous ne pouvez jamais obtenir suffisamment de détails pour la zone éclairée réelle (le mieux que je pouvais comprendre était d'utiliser renderer.bounds.extent et renderer.bounds.center pour calculer les points d'éclairage maximum à partir de la lumière).
Quelqu'un connaît-il un moyen simple dans Unity Pro d'occlure les lumières? Ou pourriez-vous me dire un bon moyen d'utiliser la méthode du point d'appui de la caméra dont je parlais?
la source
Réponses:
Vous pouvez écrire votre propre script pour masquer les lumières. Quelque chose comme ça attaché à la caméra principale:
Vous pouvez également vérifier si le point est dans un angle sur l'axe Y de la caméra (les autres axes ne feront que vous faire mal). Soyez un peu généreux avec l'angle, peut-être 2 fois le frustration de la caméra, afin que les lumières ne s'éteignent pas lorsqu'elles éclairent des zones à la vue de la caméra. Si vous choisissez d'ajouter cette optimisation supplémentaire (qui ne sera probablement pas nécessaire), assurez-vous que vous utilisez la distance comme grand-angle, car elle est beaucoup moins coûteuse.
la source