[英]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.