# Skew entire game for projection

We have a projector and it needs to be at a certain angle toward the screen so the player can be infront of the screen and infront of the kinect without blocking the projector.

Doing so result in horizontal skew, which our projection does not have internal support to fix.

We are looking for a way to ‘‘skew’’ the entire game with arrows and fix it manually when set up or booth.

Anyone as an idea on how to do this simply? Post process effect? Idk precisely what I’m actually looking for, but it’s generaly named a solution You can directly write to camera.projectionMatrix to get the kind of effect you want. The trick is knowing what to write, but you should probably look elsewhere for that - e.g. this StackOverflow thread:

Regarding setting the projection matrix in Unity, here is an example that sets an off-centre projection, though not the maths you need for your case:

``````public void Update()
{
camera.projectionMatrix = PerspectiveOffCenter(left, right, bottom, top, dist, camera.nearClipPlane, camera.farClipPlane);
}

static Matrix4x4 PerspectiveOffCenter(float left, float right, float bottom, float top, float dist, float near, float far)
{
float x = 2.0f * dist / (right - left);
float y = 2.0f * dist / (top - bottom);
float a = (right + left) / (right - left);
float b = (top + bottom) / (top - bottom);
float c = -(far + near) / (far - near);
float d = -(2.0f * far * near) / (far - near);
float e = -1.0f;
var m = new Matrix4x4();
m[0, 0] = x;
m[0, 1] = 0;
m[0, 2] = a;
m[0, 3] = 0;
m[1, 0] = 0;
m[1, 1] = y;
m[1, 2] = b;
m[1, 3] = 0;
m[2, 0] = 0;
m[2, 1] = 0;
m[2, 2] = c;
m[2, 3] = d;
m[3, 0] = 0;
m[3, 1] = 0;
m[3, 2] = e;
m[3, 3] = 0;
return m;
}
``````