获取对应于屏幕位置的射线再沿着该射线移动摄像机有时很有用。例如,需要允许用户使用鼠标选择对象,然后放大该对象,同时将其“固定”到鼠标下的相同屏幕位置(这种操作可能很有用,例如,当摄像机正在查看战术地图时)。执行此操作的代码非常简单:
using UnityEngine;
using System.Collections;
public class ExampleScript : MonoBehaviour {
public bool zooming;
public float zoomSpeed;
public Camera camera;
void Update() {
if (zooming) {
Ray ray = camera.ScreenPointToRay(Input.mousePosition);
float zoomDistance = zoomSpeed * Input.GetAxis("Vertical") * Time.deltaTime;
camera.transform.Translate(ray.direction * zoomDistance, Space.World);
}
}
}