找回密码
 立即注册

如何用滚轮放大缩小你的游戏

热度 1已有 1074 次阅读2012-11-29 18:37 |个人分类:U3D| 角色, 如何, 中心

本课程接上一课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);

}

}

 


路过

雷人

握手

鲜花
1

鸡蛋

刚表态过的朋友 (1 人)

发表评论 评论 (1 个评论)

回复 u3d8 2012-11-29 21:40
看着好眼光哦,代码有点乱

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-4-27 14:17 , Processed in 0.069562 second(s), 17 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

返回顶部