Unity5 中的相机单元
Camera units in Unity5
我目前正在编写 2D topview unity 游戏。我想将相机设置为只显示特定区域。这意味着我知道我的区域的大小,并且当跟随玩家的相机当前到达该区域的边界时,我希望可见停止。
所以这是我的问题:我知道摄像机在哪里以及它如何跟随玩家,但我不知道如何计算场地边界与摄像机看到的边界之间的距离。我该怎么做?
基本上,将您的可玩区域视为一个矩形。然后,在该矩形内创建一个较小的矩形,该矩形在计算水平边界时占相机的 orthographic size. Don't forget to include the aspect ratio。
Rect myArea; // this stores the bounds of your playable area
Camera cam; // this is your orthographic camera, probably Camera.main
GameObject playerObject; // this is your player
float newX = Mathf.Clamp(
playerObject.transform.position.x,
myArea.xMin + cam.orthographicSize * cam.aspect,
myArea.xMax - cam.orthographicSize * cam.aspect
);
float newY = Mathf.Clamp(
playerObject.transform.position.y,
myArea.yMin + cam.orthographicSize,
myArea.yMax - cam.orthographicSize
);
cam.transform.position = new Vector3(newX,newY,cam.transform.position.z);
如果您使用的是替代平面(比如 xz 而不是 xy),只需换掉所有平面中的相应尺寸计算。
我目前正在编写 2D topview unity 游戏。我想将相机设置为只显示特定区域。这意味着我知道我的区域的大小,并且当跟随玩家的相机当前到达该区域的边界时,我希望可见停止。
所以这是我的问题:我知道摄像机在哪里以及它如何跟随玩家,但我不知道如何计算场地边界与摄像机看到的边界之间的距离。我该怎么做?
基本上,将您的可玩区域视为一个矩形。然后,在该矩形内创建一个较小的矩形,该矩形在计算水平边界时占相机的 orthographic size. Don't forget to include the aspect ratio。
Rect myArea; // this stores the bounds of your playable area
Camera cam; // this is your orthographic camera, probably Camera.main
GameObject playerObject; // this is your player
float newX = Mathf.Clamp(
playerObject.transform.position.x,
myArea.xMin + cam.orthographicSize * cam.aspect,
myArea.xMax - cam.orthographicSize * cam.aspect
);
float newY = Mathf.Clamp(
playerObject.transform.position.y,
myArea.yMin + cam.orthographicSize,
myArea.yMax - cam.orthographicSize
);
cam.transform.position = new Vector3(newX,newY,cam.transform.position.z);
如果您使用的是替代平面(比如 xz 而不是 xy),只需换掉所有平面中的相应尺寸计算。