Как ограничить перемещение камеры в Unity?
Камера вращается вокруг персонажа, с помощью мышки.
public class CameraBehavior : MonoBehaviour {
public GameObject CameraSphereCenter;
public float speedCam;
public float distanceOffset = 0.25f;
public float defDistance = 4;
public float distance;
private float _x, _y;
void LateUpdate() {
_x = Input.GetAxis("Mouse X") * speedCam;
_y = Input.GetAxis("Mouse Y") * -speedCam;
transform.RotateAround(CameraSphereCenter.transform.position, transform.up, _x * Time.deltaTime);
transform.RotateAround(CameraSphereCenter.transform.position, transform.right, _y * Time.deltaTime);
transform.rotation = Quaternion.LookRotation(CameraSphereCenter.transform.position - transform.position);
transform.eulerAngles = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, 0);
RaycastHit hit;
Vector3 trueTargetPosition = CameraSphereCenter.transform.position;
Vector3 normalPositionVector = (transform.position - trueTargetPosition).normalized * defDistance;
Vector3 normalPosition = trueTargetPosition + normalPositionVector;
if (Physics.Linecast (trueTargetPosition, normalPosition, out hit)) {
distance = Vector3.Distance (trueTargetPosition, hit.point);
Vector3 position = CameraSphereCenter.transform.position - (transform.rotation * Vector3.forward * (distance - distanceOffset));
transform.position = new Vector3(position.x, position.y, position.z);
}else{
distance = defDistance;
transform.position = normalPosition;
}
}
}
Если переместить камеру над персонажем, то камеру начинает трясти. Как ограничить перемещение камеры чтобы она не могла переместится, над персонажем(или под)?.
Ответы (1 шт):
Автор решения: Tubix PvP
→ Ссылка
попробуйте это:
if(_x > "максимальное значение по Х") {
_x = "максимальное значение по Х";
}
if(_y > "максимальное значение по Y") {
_y = "максимальное значение по Y";
}
Этот код нужно поместить сразу после
_x = Input.GetAxis("Mouse X") * speedCam;
_y = Input.GetAxis("Mouse Y") * -speedCam;