이것은 좀 더 긴 대답이 될 것이므로 여기에 나와 함께하시기 바랍니다.
정자도 카메라를 사용한다고 가정합니다. 사용 된 공식은 원근 카메라에서는 작동하지 않습니다.
나는 당신의 욕망이 화면 경계 안에 당신의 사물을 유지하는 것이라고 이해할 수있다. Unity의 화면 경계는 카메라 크기와 화면 크기의 조합으로 결정됩니다.
float height = Camera.main.orthographicSize * 2;
카메라의 직교 크기는 세계 단위에서 화면의 크기의 절반을 결정합니다. 이 값을 곱하면 화면의 상단과 하단 사이에 세계 단위가 표시됩니다.
이 값에서 너비를 가져 오려면 값의 값을 화면의 너비를 화면 높이로 나눈 값을 곱합니다.
float width = height * Screen.width/Screen.height;
이제 우리는 화면의 크기를 갖지만 그 경계 내에서 개체를 유지해야합니다.
먼저 우리는 위치의 최대 값과 최소값을 결정하는 데 사용할 유형의 인스턴스를 만듭니다. 우리는 우리의 경계 인스턴스의 중심부터 Vector3.zero
을 사용
Bounds bounds = new Bounds (Vector3.zero, new Vector3(width, height, 0));
주의는 세계의 중심이되어야합니다. 이것은 개체가 내부로 이동할 수 있어야하는 영역의 중심입니다.
마지막으로 결과 경계 값 속성에 따라 개체의 위치 값을 고정합니다.
Vector3 clampedPosition = transform.position;
clampedPosition.x = Mathf.Clamp(clampedPosition.x, bounds.min.x, bounds.max.x);
transform.position = clampedPosition;
이렇게하면 개체가 화면의 경계를 떠나지 않도록해야합니다.
'Screen.width'와'Screen.height'를 사용하고 가능한 한 많이 하드 코딩하는 것을 피하십시오. –
재생 해 주셔서 감사합니다. screen.width 및 height 사용 방법을 설명 할 수 있습니까? –
나는하려고하지만, 나는 당신의 상황에서 그것을 돕기에 충분한 정보가 없다. 달성하고자하는 이미지를 게시 할 수 있습니까? –