- Home /
Question by
Huggz · Aug 14, 2017 at 12:39 PM ·
rotationmovementcamera-movement
Panning and Rotating a Camera
I have the following code attached to an ortho camera. It works fine to pan around, but when I start rotating, I quickly realize that the movement is world space and not relative to the camera. However, trying to switch this to use local space with transform.Translate, panning left/right work fine, but pan forward and backward move the camera closer and further from scene. How do I make this move relative to what I'm looking at?
if (_PanForward)
{
transform.Translate(Vector3.forward * (Speed * Time.deltaTime), Space.Self);
//transform.position = new Vector3(transform.position.x + (Speed * Time.deltaTime), transform.position.y, transform.position.z + (Speed * Time.deltaTime));
_PanForward = false;
}
if (_PanBackward)
{
transform.Translate(Vector3.back * (Speed * Time.deltaTime), Space.Self);
//transform.position = new Vector3(transform.position.x - (Speed * Time.deltaTime), transform.position.y, transform.position.z - (Speed * Time.deltaTime));
_PanBackward = false;
}
if (_PanLeft)
{
transform.Translate(Vector3.left * (Speed * Time.deltaTime), Space.Self);
//transform.position = new Vector3(transform.position.x - (Speed * Time.deltaTime), transform.position.y, transform.position.z + (Speed * Time.deltaTime));
_PanLeft = false;
}
if (_PanRight)
{
transform.Translate(Vector3.right * (Speed * Time.deltaTime), Space.Self);
//transform.position = new Vector3(transform.position.x + (Speed * Time.deltaTime), transform.position.y, transform.position.z - (Speed * Time.deltaTime));
_PanRight = false;
}
if (_RoatateCClockwise)
{
var point = CoordinateUtility.CoordinatesFromScreenPosition(new Vector3(Screen.width / 2, Screen.height / 2));
transform.RotateAround(point, Vector3.up, Time.deltaTime * Speed);
_RoatateCClockwise = false;
}
if (_RoatateClockwise)
{
var point = CoordinateUtility.CoordinatesFromScreenPosition(new Vector3(Screen.width / 2, Screen.height / 2));
transform.RotateAround(point, Vector3.up, -Time.deltaTime * Speed);
_RoatateClockwise = false;
}
Comment