【Unity】限制相机移动范围


将该脚本挂载到拥有BoxCollider组件的GameObject上,设置包围盒的大小范围即可限制主相机的移动范围

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveRange : MonoBehaviour
{
/*
使用方法:
创建矩形框,设定好矩形框的范围后,将此脚本挂在矩形GameObject上,就可以限制主摄像机的移动范围了
*/
private Vector3 boxSize;
private Vector3 boxCenter;
private Vector3 min;
private Vector3 max;
private void OnEnable()
{
boxSize = transform.GetComponent<BoxCollider>().size;
boxCenter= transform.GetComponent<BoxCollider>().center;
min= transform.position + boxCenter- boxSize* 0.5f;
max= transform.position + boxCenter+ boxSize* 0.5f;
}
private void Update()
{
Vector3 cameraP = Camera.main.transform.position;

if (cameraP.x < min.x)
{
cameraP.x = min.x;
}
else if (cameraP.x > max.x)
{
cameraP.x = max.x;
}

if (cameraP.y < min.y)
{
cameraP.y = min.y;
}
else if (cameraP.y > max.y)
{
cameraP.y = max.y;
}

if (cameraP.z < min.z)
{
cameraP.z = min.z;
}
else if (cameraP.z > max.z)
{
cameraP.z = max.z;
}

Camera.main.transform.position = cameraP ;
}
}