unity3d鼠标滚轮实现摄像头拉近后退

voidUpdate(){target=GameObject.Find("new_offer");//滚轮设置相机与人物的距离.if(Input.GetAxis("Mou... void Update ()
{
target = GameObject.Find("new_offer");
// 滚轮设置
相机与人物的距离.
if(Input.GetAxis("Mouse ScrollWheel") != 0)
{

theDistance = theDistance + Input.GetAxis("Mouse ScrollWheel") *
Time.deltaTime * ScrollKeySpeed;
}
// 鼠标中间滚动得到的值是不确定的,不会正好就是0,或
-10,当大于0时就设距离为0,小于MaxDistance就设置为MaxDistance
if(theDistance>0)
{

theDistance = 0;
}
if(theDistance < MaxDistance)
{

theDistance = MaxDistance;
}
transform.position =
target.transform.position;
SetDistance();
}

void Start
()
{
if (rigidbody)
{
rigidbody.freezeRotation =
true;
transform.position = target.transform.position;

}
}

//设置相机与人物之间的距离
void SetDistance()
{

transform.Translate(Vector3.forward * theDistance);
}

请问,运行时发现摄像头只是上下移动,并不实现拉近后退的效果,这是为什么?
展开
 我来答
helpmeps
推荐于2017-11-25 · TA获得超过577个赞
知道小有建树答主
回答量:292
采纳率:50%
帮助的人:347万
展开全部
不是distance,是fieldOfView,把下面的代码保存为C#再赋给主相机

using UnityEngine;
using System.Collections;

public class CubeStatic : MonoBehaviour
{

public float minFov = 15f;
public float maxFov = 90f;
public float sensitivity = 10f;

void Update()
{
float fov = Camera.main.fieldOfView;
fov += Input.GetAxis("Mouse ScrollWheel") * sensitivity;
fov = Mathf.Clamp(fov, minFov, maxFov);
Camera.main.fieldOfView = fov;
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式