Ale*_*lex 6 orthographic unity-game-engine
我有一个正交相机,想实现一个特定点的缩放功能。即,假设您有一张图片并且想要缩放到图片的特定部分。
我知道如何放大,问题是将相机移动到具有所需焦点区域的位置。
我怎么能这样做?
相机的orthographicSize数量是视口上半部分的世界空间单位数。如果它是 0.5,那么 1 单位的立方体将恰好填充视口(垂直)。
因此,要放大目标区域,请将相机置于其中心(通过将 (x,y) 设置为目标中心)并设置orthographicSize为区域高度的一半。
以下是居中并缩放到对象范围的示例。(使用 LMB 进行缩放;按“R”进行重置。)
public class OrthographicZoom : MonoBehaviour
{
private Vector3 defaultCenter;
private float defaultHeight; // height of orthographic viewport in world units
private void Start()
{
defaultCenter = camera.transform.position;
defaultHeight = 2f*camera.orthographicSize;
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
Collider target = GetTarget();
if(target != null)
OrthoZoom(target.bounds.center, target.bounds.size.y); // Could directly set orthographicSize = bounds.extents.y
}
if (Input.GetKeyDown(KeyCode.R))
OrthoZoom(defaultCenter, defaultHeight);
}
private void OrthoZoom(Vector2 center, float regionHeight)
{
camera.transform.position = new Vector3(center.x, center.y, defaultCenter.z);
camera.orthographicSize = regionHeight/2f;
}
private Collider GetTarget()
{
var hit = new RaycastHit();
Physics.Raycast(camera.ScreenPointToRay(Input.mousePosition), out hit);
return hit.collider;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8949 次 |
| 最近记录: |