Unity5中的摄像头单元

时间:2017-04-05 15:26:03

标签: c# unity3d camera unity5

我目前正在编写一个2D topview统一游戏。我想设置相机,只有特定区域可见。这意味着我知道我的区域的大小,当跟随玩家的摄像机当前到达该区域的边界时,我想要看到停止。

所以这是我的问题:我知道相机在哪里以及它如何跟随播放器,但我不知道如何计算场的边界和相机看到的边界之间的距离。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

基本上,将可播放区域视为矩形。然后,在该矩形内创建一个较小的矩形,以考虑相机的orthographic size.。在计算水平边界时,不要忘记包含相机的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 ),只需在所有计算中换出相应的尺寸。