Morning all.
my for-fun project at the moment is a basic isomorphic base building tower defense strategy game.
I need to be able to translate between my easy to use 3D Cartesian world system to my 2D Isometric screen projection.
I thought I would create a thread on this, to document my progress and get a bit of discussion going.
UPDATE:
My world cord system will use 3D XYZ coordinates. I need to convert this to the 2D XY cord system that the screen uses to draw.
The goal is to be able to then draw my 3D world in 2D Isometric projection.
I started by Wikipedia-ing that: http://en.wikipedia.org/wiki/Isometric_Projection
The first important point I noticed it that I’ve got the camera angles wrong on my sprite renders
After reading through the wiki article, i moved to this page that answers pretty much all my questions.
From this I was able to sketch up the following function for transforming from world to screen cords.
Vector2 cameraOffset;
// these could probably be a constant.
float a = arctan(1/2);
float s = 100f; // the edge-width of one cubic cell in the world.
Vector2 World2Screen(float X, float Y, float Z)
{
float screenX = cameraOffset.X + (X-Z)cos(a)s;
float screenY = cameraOffset.Y + ((X+Z)sin(a)-Y)s;
return new Vector2(screenX, screenY);
}
I’ve not had a chance to run this code yet, but any comments, suggestions and constructive crit’ are welcome.
Thanks for reading, have a good day,
Matt