- Home /
How to figure out correct distance from Orthographic camera (sort of, see pictures in post)
It's a little difficult to explain what I'm trying to do, so I made a quick picture to explain.
I'm using an orthographic camera in a project, and the camera can rotate and move. The player always moves left and right relative to this camera as if it were a 2D game, but the game logic works in 3D including the collisions. I want to spawn things in the world the same distance from this camera as the player (black dot) so that they will be able to interact with those objects as if the world was 2D. If you consider the case that the camera is staring down the Z axis, what I'd want to do is spawn objects with at the same Z coordinate as the player, but different X coordinates. The line of where I want things to spawn is the yellow line in the picture. Because the camera is not necessarily looking down an axis, what I really want is the length of the blue lines in the picture below (they're all the same length). Once I have that I plan to use it in combination with ScreenToWorldPoint to place objects.
Answer by SteenPetersen · Jun 01, 2020 at 06:14 AM
Hi there @nkatz565_unity
I think what you are looking for is something like this:
[SerializeField] private Vector3 heading;
[SerializeField] private float distanceToCamera;
[SerializeField] private Transform player;
private Camera _cam;
private void Start()
{
_cam = Camera.main;
}
private void LateUpdate()
{
heading = player.position - _cam.transform.position;
distanceToCamera = Vector3.Dot(heading, _cam.transform.forward);
Debug.Log(distanceToCamera);
}
Let me know if that helps. Note that we use LateUpdate for this, please read its description, I am guessing that you will put this functionality on the camera script in your implementation.