我试着做一个简单的缩放脚本,当你点击一个立方体。我想要它放大立方体,但我找不到办法使主相机变焦为我。我尝试过几种不同的方法。这是目前的一张。我把它放在一个OnMouseDown中,但是它仍然不能工作,所以我把它移到了更新中,看是否可以让它工作。
void Update ()
{
if(Input.GetKeyDown("z"))
{
Debug.Log("Pressed Z");
zoomedIn = !zoomedIn;
}
if(zoomedIn == true)
{
Debug.Log("True!");
Camera.main.GetComponent<Camera>().fieldOfView = Mathf.Lerp(GetComponent<Camera>().fieldOfView, zoom, Time.deltaTime*smooth);
}
else
{
Camera.main.GetComponent<Camera>().fieldOfView = Mathf.Lerp(GetComponent<Camera>().fieldOfView, normal, Time.deltaTime*smooth);
}
}发布于 2016-07-26 16:35:48
看起来zoom和normal没有分配给正确的值。还要确保您在Perspective,而不是Orthographic视图中。
如果您想使用
Orthographic视图,只需将fieldOfView的所有用法更改为orthographicSize,并将zoom更改为合理的东西,比如5个单元。
normal应该是相机的初始fieldOfView,在Start中检索
// camera is a private field
private Camera camera;
camera = GetComponent<Camera>();
normal = camera.fieldOfView;zoom应该小于normal (初始fieldOfView),以便能够“放大”。
您的条件分支将更改为
if (zoomedIn) // Same as if (zoomedIn == true)
{
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, zoom, Time.deltaTime * smooth);
}
else
{
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, normal, Time.deltaTime * smooth);
}或者,更简洁的版本:
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, zoomedIn ? zoom : normal, Time.deltaTime * smooth);我还建议使用Coroutine来完成这个任务,而不是在Update中这样做。
https://stackoverflow.com/questions/38593412
复制相似问题