我目前正在编写一个2D topview统一游戏。我想设置相机,只有特定区域可见。这意味着我知道我的区域的大小,当跟随玩家的摄像机当前到达该区域的边界时,我想要看到停止。
所以这是我的问题:我知道相机在哪里以及它如何跟随播放器,但我不知道如何计算场的边界和相机看到的边界之间的距离。我怎么能这样做?
答案 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 ),只需在所有计算中换出相应的尺寸。