- Home /
Keep player from falling outside the camera? [2d]
So I'm creating a simple 2d game with a fixed camera!
Is there an easy way to keep my player, who has physics attached to him, from falling outside of the cameras views?
Currently I just have 4 walls surrounding the borders of the camera.
Just wondering if there is a better way to do this!
-thanks!
Comment
Best Answer
Answer by imabauss · Apr 13, 2014 at 03:15 AM
Hey I figured this out, If anyone else wants a simple way to keep objects from falling out of the cameras view no matter what the screen size then here you go:
#pragma strict
//Reference the camera
var mainCam : Camera;
//Reference the colliders we are going to adjust
var topWall : BoxCollider2D;
var bottomWall : BoxCollider2D;
var leftWall : BoxCollider2D;
var rightWall : BoxCollider2D;
function Start () { //Only set this to Update if you know the screen size can change during a playsession.
//Move each wall to its edge location:
topWall.size = new Vector2 (mainCam.ScreenToWorldPoint (new Vector3 (Screen.width * 2f, 0f, 0f)).x, 1f);
topWall.center = new Vector2 (0f, mainCam.ScreenToWorldPoint (new Vector3 ( 0f, Screen.height, 0f)).y + 0.5f);
bottomWall.size = new Vector2 (mainCam.ScreenToWorldPoint (new Vector3 (Screen.width * 2, 0f, 0f)).x, 1f);
bottomWall.center = new Vector2 (0f, mainCam.ScreenToWorldPoint (new Vector3( 0f, 0f, 0f)).y - 0.5f);
leftWall.size = new Vector2(1f, mainCam.ScreenToWorldPoint(new Vector3(0f, Screen.height*2f, 0f)).y);;
leftWall.center = new Vector2(mainCam.ScreenToWorldPoint(new Vector3(0f, 0f, 0f)).x - 0.5f, 0f);
rightWall.size = new Vector2(1f, mainCam.ScreenToWorldPoint(new Vector3(0f, Screen.height*2f, 0f)).y);
rightWall.center = new Vector2(mainCam.ScreenToWorldPoint(new Vector3(Screen.width, 0f, 0f)).x + 0.5f, 0f);
}
Courtesy of brackeys.com
Just make sure to create 4 empty game objects then add box colliders to them (box collider 2d in my case).
then link them up to the script. (I put the script on a different empty game object)