fjkrl 发表于 2013-3-4 22:52

Unity3D 第三课如何用滚轮放大缩小你的游戏

Unity3D 第三课如何用滚轮放大缩小你的游戏
v本课程接上一课Unity3D 第二课如何让摄像机跟随你的角色首先要以你当前控制的角色为中心,
我们需要以下变量:
[*]//最小缩小距离
[*]public float theDistance = -10f;
[*]    //最大缩小距离
[*]    public float MaxDistance = -10f;
[*]    //缩放速度
[*]    public float ScrollKeySpeed = 100.0f;

复制代码
在Update () 初始化
[*]      // 滚轮设置 相机与人物的距离.
[*]             if(Input.GetAxis("Mouse ScrollWheel") != 0)
[*]             {
[*]                  theDistance = theDistance + Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * ScrollKeySpeed;
[*]             }
[*]             // 鼠标滚轮滚动
[*]             if(theDistance>0)
[*]                  theDistance = 0;
[*]             if(theDistance < MaxDistance)
[*]                  theDistance = MaxDistance;

复制代码
下面贴出全部代码
[*]using UnityEngine;
[*]using System.Collections;
[*]
[*]public class MouseLook : MonoBehaviour {
[*]      public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
[*]      public RotationAxes axes = RotationAxes.MouseXAndY;
[*]      public float sensitivityX = 15F;
[*]      public float sensitivityY = 15F;
[*]      public float minimumX = -360F;
[*]      public float maximumX = 360F;
[*]      public float minimumY = -85F;
[*]      public float maximumY = 4F;
[*]      public float rotationY = 0F;
[*]      public GameObject target;
[*]      public float theDistance = -10f;
[*]      public float MaxDistance = -10f;
[*]      public float ScrollKeySpeed = 100.0f;
[*]      void Update ()
[*]      {
[*]                target = GameObject.Find("Player");
[*]               // 滚轮设置 相机与人物的距离.
[*]             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;
[*]                if(Input.GetMouseButton(1))
[*]                {
[*]                        transform.position = target.transform.position;
[*]                        if (axes == RotationAxes.MouseXAndY)
[*]                        {
[*]                              float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
[*]                              rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
[*]                              rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
[*]                              transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
[*]                        }
[*]                        else if (axes == RotationAxes.MouseX)
[*]                        {
[*]                              transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
[*]                        }
[*]                        else
[*]                        {
[*]                              rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
[*]                              rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
[*]                              transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
[*]                        }
[*]                        SetDistance();
[*]                }
[*]                else
[*]            {
[*]                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);
[*]      }
[*]}

复制代码
运行游戏看看。现在是不是有点大型游戏的味道了哇……

beaver 发表于 2015-6-11 15:45

马了回去试试~

龙克亚 发表于 2015-6-20 01:17


感谢楼主的无私分享!{:soso__11402694654016840197_7:}

silence394394 发表于 2017-3-19 22:06

楼主是超人

jia1009 发表于 2017-3-19 21:55

好帖就是要顶

沧海一叶舟 发表于 2017-3-19 22:14

真心顶

shuiyue654 发表于 2017-3-19 21:58

说的非常好

crop_solid 发表于 2017-3-19 21:40

很好哦

九重霄 发表于 2017-4-12 15:58

很不错

aelop 发表于 2017-4-12 16:10

好帖就是要顶
页: [1]
查看完整版本: Unity3D 第三课如何用滚轮放大缩小你的游戏