2016-07-04 210 views
0

我有一个球,它是由随机高度和距离的相机聚焦。在鼠标滚动中,我想放大我的相机朝向球。我已经试过这个奇怪的代码,它的行为很奇怪,正如我所料。放大或缩小相机

void ZoomInOut() { 
    if(Input.GetAxis("Mouse ScrollWheel") > 0){ 
     Debug.Log("mouse scroll wheel greater"); 
     distance += 20.0f; 
     Vector3 negDistance = new Vector3(targetFollow.transform.position.x, targetFollow.transform.position.y, -distance); 
     Vector3 pos = transform.rotation * negDistance + targetFollow.transform.position; 
     transform.position = pos; 
    } 
    if(Input.GetAxis("Mouse ScrollWheel") < 0){ 
     Debug.Log("mouse scroll wheel less"); 
     distance -= 20.0f; 
     Vector3 negDistance = new Vector3(targetFollow.transform.position.x, targetFollow.transform.position.y, -distance); 
     Vector3 pos = transform.rotation * negDistance + targetFollow.transform.position; 
     transform.position = pos; 
    } 
} 
+0

是否相机始终着眼于迎球? (如在,球是在视图的中心) – mgear

+0

是的,它总是看球 –

回答

0

如果想放大直接向前/向后,可以使用此:ZoomWithMouse.cs

它只是沿着transform.forward轴移动摄像机。

using UnityEngine; 

// Zoom forward and backward with mousewheel, Attach this script to camera 
public class ZoomWithMouse : MonoBehaviour 
{ 
    public float zoomSpeed = 300; 
    void Update() 
    { 
     var mouseScroll = Input.GetAxis("Mouse ScrollWheel"); 

     if (mouseScroll!=0) 
     { 
      transform.Translate(transform.forward * mouseScroll * zoomSpeed * Time.deltaTime, Space.Self); 
     } 
    } 
} 

来源: https://github.com/UnityCommunity/UnityLibrary/blob/master/Scripts/Camera/ZoomWithMouse.cs

+0

它也怪怪没有时间不放大有时不出来 –

+0

工作在这里..尝试在空的场景,如果别的东西是移动相机? – mgear

+0

修复了代码中缺少的变量 – mgear

-1
using UnityEngine; 
using System.Collections; 

public class Zoom : MonoBehaviour 
{ 
    private float _speed = 10; 

private void Update() 
{ 
    float mouseScroll = Input.GetAxis("Mouse ScrollWheel"); 

    if (mouseScroll!=0) 
    { 
     transform.Translate(Mathf.Sign(mouseScroll) * transform.forward * _speed * Time.deltaTime, Space.World); 
    } 
} 
}