- Home /
Convert UI Image size and position to Camera viewport rec.
Hi,
I'm trying to make a mini map which will be overlaid by an mask image on GUI canvas.
My canvas UI scale mode was set to Scale with screen size, and reference resolution was set to 1920x1080.
I used "mapImage" as an object for size and position comparison.
"mapImage" was put on GUI canvas, and will be hidden from the camera when playing. It's position and size made it right below the mask image.
I used the code below to match camera viewport size and position with "mapImage":
public Image mapImage;
public int canvasWidth = 1920;
public int canvasHeight = 1080;
void Start () {
float canvasWidthRatio = canvasWidth / Screen.width;
float canvasHeightRatio = canvasHeight / Screen.height;
float cameraX = mapImage.rectTransform.rect.x / canvasWidthRatio;
float cameraY = mapImage.rectTransform.rect.y / canvasHeightRatio;
float cameraWidth = mapImage.rectTransform.rect.width / canvasWidthRatio;
float cameraHeight = mapImage.rectTransform.rect.height / canvasHeightRatio;
this.camera.pixelRect = new Rect(Screen.width - cameraX, Screen.height - cameraY, cameraWidth, cameraHeight);
}
I can't make it right. Please help!
Answer by Pain of the dark · May 04, 2015 at 09:32 AM
After all, I found the answer. My "mapImage" has pivot centered in the object which mean "cameraX" and "cameraY" have to be changed like below:
public Image mapImage;
public int canvasWidth = 1920;
public int canvasHeight = 1080;
void Start () {
float canvasWidthRatio = canvasWidth / Screen.width;
float canvasHeightRatio = canvasHeight / Screen.height;
float cameraWidth = mapImage.rectTransform.rect.width / canvasWidthRatio;
float cameraHeight = mapImage.rectTransform.rect.height / canvasHeightRatio;
float cameraX = mapImage.rectTransform.transform.position.x - cameraWidth / 2;
float cameraY = mapImage.rectTransform.transform.position.y - cameraHeight / 2;
this.camera.pixelRect = new Rect(cameraX, cameraY, cameraWidth, cameraHeight);
}
Your answer
Follow this Question
Related Questions
Isometric Camera : Get the displayed terrain portion. 1 Answer
WorldToViewportPoint and WorldToScreenPoint give wrong positions when VR is enabled 1 Answer
Move the camera in 2D when target reaches bounds. Is there a better way? 0 Answers
Detecting camera viewport on mouse down? 1 Answer
Prevent objects from disappearing when zooming in on an orthographic scene? 1 Answer