|
资源信息 Tutorial Information
教程名称: | Unity3D 第三课 如何用滚轮放大缩小你的游戏(发帖教程) |
适用引擎: | (适用引擎,为空默认为Unity) |
教程语种: | 中文 |
教程等级: | 1 |
教程格式: | 图文(请用IE9以上浏览器访问本版块) |
教程作者: | 转载自互联网 (如有问题请短消息联系作者或发表回复) |
下载地址: | 无 (兑换积分) |
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;
- [AddComponentMenu("Camera-Control/Mouse Look")]
- 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);
- }
- }
复制代码
运行游戏看看。现在是不是有点大型游戏的味道了哇……
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|