Hello!
I try to make a 2d isometric game with Unity, that uses all 3 dimensions in gameplay (as well as physics). To approach that, i set all my flat sprites in 3d world and my camera to 45 degrees to the floor. Of course, all sprites became … “shorter”, because of camera rotation. To fix it, as I see it, i need to rotate all my sprites to 45 degrees, so they will allways facing at the camera - so it will be some kind of billboarding. For some physics and mechanics reasons, i cant do it in scripts, so i guessed about shader.
Normal billboard approach uses only position of billboards, but i need whole World matrix for my sprites (they are affected by physics, etc). The problem is, i can modify World matrix manually by myself in vertex shader (at least, i think, its possible), but i can’t do anything with it later in code: you need to multiply input vertex by World * View * Projection matrix to propper matrix transformations, but as i changed World matrix with a new one, i need ViewProjection or View and Projection matrices to create my own brand new MVP matrix. But Unity has no View or ViewProjection matrices, so i can’t ![]()
Maybe there is a way to rotate object in shader or maybe my approach is whole wrong?.. Thanks!
(P.S. sorry for my english)
First scren is thats how its looks in the editor. Second - the game itself. Yes, i know it looks like Diablo, its kinda small funny parody ![]()

