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

Unity 3d 鼠标滚轮控制摄像头

2015-01-07 09:18 357 查看
菜鸟初学unity3d 需要的效果,鼠标左键绕中心模型旋转摄像机,滚轮调整摄像头与模型距离,右键暂时保留

因为有js版和c#(不会),不过自己整理了一下,可供大家选择

鼠标左键,摄像头旋转(c#版)

using UnityEngine;
using System.Collections;

public class control : MonoBehaviour {
public float roate_Speed=200.0f;//旋转速度
void Start () {

}

// Update is called once per frame
void Update () {
if (Input.GetMouseButton(0)){
//Debug.Log("射线取得对象");
float mousX = Input.GetAxis("Mouse X") * roate_Speed;//得到鼠标横向移动距离
float mousY = Input.GetAxis("Mouse Y") * roate_Speed;//得到鼠标纵向移动距离
// 绕Y轴旋转
transform.RotateAround (Vector3.zero, Vector3.up, mousX * Time.deltaTime);
// 绕x轴旋转(效果不是很好,使用时可注掉)
transform.RotateAround (Vector3.zero, Vector3.right, -mousY * Time.deltaTime);
}
}
}

鼠标滚轮调整摄像头与模型间距离
c#版

using UnityEngine;
using System.Collections;

public class carmera : MonoBehaviour {
public float minFov = 15f;
public float maxFov = 90f;
public float sensitivity = 10f;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
float fov = Camera.main.fieldOfView;
fov += -Input.GetAxis("Mouse ScrollWheel") * sensitivity;
fov = Mathf.Clamp(fov, minFov, maxFov);
Camera.main.fieldOfView = fov;
}
}


javascript版
#pragma strict
var viewSpeed=5;
// 与模型最近距离
var minFov=8.0;
// 与模型最远距离
var maxFov=100.0;
var fov:float;

function Start () {

}

function Update () {
if(Input.GetAxis("Mouse ScrollWheel")) {
// 从当前位置进行变更
fov = this.GetComponent.<Camera>().fieldOfView;
//Debug.Log("检测到滑轮"+Input.GetAxis("Mouse ScrollWheel"));
fov -= Input.GetAxis("Mouse ScrollWheel") * viewSpeed;
fov = Mathf.Clamp(fov, minFov, maxFov);
this.GetComponent.<Camera>().fieldOfView = fov;
}
}

如果发现什么问题大家可以评论,共同进步吗!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: