您的位置:首页 > 移动开发 > Unity3D

[Unity3D]Unity3D游戏开发之鼠标滚轮实现放大缩小

2014-04-05 14:18 281 查看
大家好,欢迎大家关注由我为大家带来的Unity3D游戏开发系列文章,我的博客地址为:http://blog.csdn.net/qinyuanpei。
今天为大家分享的是在Rpg游戏中十分常见的鼠标滚轮调整摄像机视野效果,首先我们先创建一个游戏场景:



接下来我们编写一段脚本代码:

using UnityEngine;
using System.Collections;

public class CameraZoom : MonoBehaviour {

	void Start () {
	
	}
	

	void Update () 
	{
		//Zoom out
		if (Input.GetAxis("Mouse ScrollWheel") <0)
        {
           if(Camera.main.fieldOfView<=100)
           Camera.main.fieldOfView +=2;
           if(Camera.main.orthographicSize<=20)
           Camera.main.orthographicSize +=0.5F;
        }
		//Zoom in
	    if (Input.GetAxis("Mouse ScrollWheel") > 0)
	    {
	      if(Camera.main.fieldOfView>2)
			Camera.main.fieldOfView-=2;
		  if(Camera.main.orthographicSize>=1)
		    Camera.main.orthographicSize-=0.5F;
	    }
	}
}
从上面的代码中,我们可以看出,我们通过改变摄像机的视野就可以实现场景的放大和缩小,而对于鼠标滚轮的监听我们这里用到了GetAxis()方法,下面给出演示动画:



2014年10月6日更新
起初写这篇文章的时候,对于很多概念都没有较为清楚地认识,如今渐渐地懂了,只好回头再来补上当时没有解决的问题。在这段脚本中我们是通过改变摄像机的视野大小来实现这样的一个缩放效果的,这是一种方法。当然我们可以选择另外的一种方法,即根据透视成像原理,摄像机离物体越近,则物体成像相当越大,摄像机离物体越远,则物体成像相对越小。利用这个原理,我们可以很容易的想到我们可以通过改变摄像机到物体地距离来实现缩放效果。于是,我们有了下面的代码:
//鼠标滚轮缩放  
        Distance-=Input.GetAxis("Mouse ScrollWheel") * ZoomSpeed;  
        Distance=Mathf.Clamp(Distance,MinDistance,MaxDistance);  
          
        //重新计算位置  
        Vector3 mPosition = mRotation * new Vector3(0.0F, 0.0F, -Distance) + Target.position;
这段代码可以让我们在一个由MinDistance、MaxDistance所确定地范围内对Distance按照一定地ZoomSpeed进行缩放,这样我们就可以根据Distance的值来重新计算摄像机的位置,这样我们同样能实现类似与这篇文章中地效果。本次更新就是这样了,希望大家喜欢啊。如果对这段代码有疑问,可以访问/article/1479851.html或者给博主留言,谢谢大家。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: