- Home /
How to set screen boundaries on a moving camera
Thanks in advance to anyone who replies.
I am working on a basic horizontal shooter game where the screen moves horizontally at a fixed rate whilst the player moves around the screen shooting at incoming projectiles. My problem is that I have set the screen boundaries using the ScreenToWorldPoint; however after the camera moves a certain distance my player object is being pushed outside of the screen space.
Please find my code attached below. It might help clarify the issue:
using UnityEngine;
// Attached to the player
public class ScreenBoundaries : MonoBehaviour
{
private Vector3 screenBoundaries;
public GameObject player;
private void Start()
{
SetBoundaries();
}
private void Update()
{
Vector3 playerPosition = player.transform.position;
playerPosition.x = Mathf.Clamp(playerPosition.x, screenBoundaries.x, -screenBoundaries.x);
playerPosition.y = Mathf.Clamp(playerPosition.y, screenBoundaries.y, -screenBoundaries.y);
player.transform.position = playerPosition;
}
private void SetBoundaries()
{
screenBoundaries = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height,
Camera.main.transform.position.z));
}
}
Answer by mansoor090 · Jan 09, 2020 at 05:24 PM
Search for edge collider . Create collider points using screen x and y coordinates and attach with camera gameobject . Your problem will be fixed
Thanks for the swift reply. However the issue is that I am using 3d objects and colliders. If I recall correctly the edge collider doesn't work correctly with 3d colliders correct? Or am I wrong?
Your answer
Follow this Question
Related Questions
Getting Device Screen Height and width in inches 2 Answers
Android screen orientation: why am I getting wrong screen size values? 1 Answer
Screen height and width confusion 1 Answer
Screen.width and Screen.height sometimes flipped for Android 1 Answer
When are Screen.width and Screen.height updated after changing the Screen.orientation value? 0 Answers