Unity 根据相机高度调整相机移动边界
时间: 2024-06-12 15:10:47 浏览: 174
可以通过以下步骤来实现根据相机高度调整相机移动边界:
1. 获取相机的高度,可以使用 Camera.main.transform.position.y 来获取相机的高度。
2. 计算相机移动边界的位置,可以使用 Camera.main.orthographicSize * Screen.width / Screen.height 来计算相机移动边界的宽度,然后根据相机的高度和宽度计算出相机移动边界的位置。
3. 在相机移动时,判断相机是否超出了移动边界,如果超出了移动边界,则限制相机的移动范围。
以下是示例代码:
```
public class CameraController : MonoBehaviour
{
public float moveSpeed = 5f;
public float minHeight = 5f;
public float maxHeight = 15f;
private float minX, maxX, minY, maxY;
void Start()
{
// 计算相机移动边界的位置
float height = Camera.main.transform.position.y;
float width = Camera.main.orthographicSize * Screen.width / Screen.height;
minX = -width;
maxX = width;
minY = Mathf.Max(minHeight, height - Camera.main.orthographicSize);
maxY = Mathf.Min(maxHeight, height + Camera.main.orthographicSize);
}
void Update()
{
// 移动相机
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
transform.Translate(new Vector3(horizontal, vertical, 0) * moveSpeed * Time.deltaTime);
// 限制相机移动范围
float x = Mathf.Clamp(transform.position.x, minX, maxX);
float y = Mathf.Clamp(transform.position.y, minY, maxY);
transform.position = new Vector3(x, y, transform.position.z);
}
}
```
阅读全文