繁体   English   中英

放大或缩小相机

[英]Zoom in or zoom out Camera

我有一个球,它被照相机聚焦在随机的高度和距离上。 在鼠标滚动时,我想将摄像机向球内放大。 我已经尝试了这个怪异的代码,并且表现出了我所期望的怪异。

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;
    }
}

如果要直接向前/向后缩放,可以使用: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

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);
    }
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM