La gestion des coordonnées 2D et de la mise à l'échelle dans Unity est assez simple, mais pas évidente et, comme vous l'avez remarqué, elle ne ressemble pas au fonctionnement des autres outils de développement. La raison pour laquelle cela se produit est que Unity était un moteur 3D avec récemment greffé des graphiques 2D.
En particulier, 1 unité dans Unity n'est pas nécessairement 1 pixel dans l'image. Lorsque vous importez des images en tant que sprites 2D, il existe en fait un paramètre Pixels en unités qui pourrait être défini sur 1: 1, mais je recommande de le laisser sur la valeur par défaut 100: 1 pour quelques raisons (le moteur physique ne fonctionne pas correctement à 1: 1, et la valeur par défaut est meilleure pour la compatibilité avec le code des autres).
Ce paramètre de mise à l'échelle signifie que toutes les positions sont divisées par 100. C'est assez facile tant que vous vous souvenez toujours de la mise à l'échelle; lorsque vous souhaitez déplacer un sprite de 256 pixels (par exemple), vous le déplacez 2,56 Vous pouvez également écrire une fonction utilitaire pour arrondir les nombres à 2 décimales / le pixel le plus proche: Mathf.Round (float * 100) / 100f
Quant à la mise en place d'une caméra parfaite au pixel près, définissez-la d'abord comme une caméra orthographique. Lorsque vous sélectionnez la caméra, dans ses paramètres se trouve une liste déroulante pour la projection en perspective ou orthographique; la perspective signifie que les choses auront l'air en 3D, tandis que l'orthographe affiche la scène à plat. Sous cette liste déroulante se trouve Taille; réglez la taille orthographique de la caméra sur la moitié des dimensions en pixels de l'écran souhaité.
Par exemple, supposons que vous vouliez un écran 1024x768 au pixel près. Eh bien, cela signifie que la hauteur de la caméra devrait être de 384 pixels. Divisez cela par 100 (en raison de l'échelle des pixels en unités) et vous obtenez 3,84 pour la taille de la caméra. Encore une fois, ce calcul est simplement SCREEN_SIZE / 2 / 100f
(J'attendais de voir quelles autres réponses arriveraient en premier, mais cela fait quelques jours. Je fais de la 2D dans Unity depuis un certain temps en utilisant 2D Toolkit , mais je suis relativement nouveau dans les fonctionnalités 2D intégrées)