using UnityEngine;
using System.Collections;
public class mouseRotateAndScale : MonoBehaviour {
GameObject car;
//public GameObject light;
Vector2 p1, p2;//用来记录鼠标的位置,以便计算旋转幅度
// 鼠标中间键
int MouseWheelSensitivity = 5;
int MouseZoomMin = 18;
int MouseZoomMax = 90;
float normalDistance = 60;
// Use this for initialization
void Start () {
car = GameObject.Find("benchi");
}
// Update is called once per frame
void Update () {
//旋转
if (Input.GetMouseButtonDown(0))
{
p1 = new Vector2(Input.mousePosition.x, Input.mousePosition.y);//鼠标左键按下时记录鼠标位置p1
}
if (Input.GetMouseButton(0))
{
p2 = new Vector2(Input.mousePosition.x, Input.mousePosition.y);//鼠标左键拖动时记录鼠标位置p2
if (transform.position.y >= 20 && transform.position.y <= 130) //控制在20-130之内
{
float dx = p2.x - p1.x;
float dy = (float)0.6 * (p2.y - p1.y);
//鼠标上下移动
transform.Translate(-dy * Vector3.up * Time.deltaTime);
transform.RotateAround(car.transform.position, Vector3.up, dx * Time.deltaTime);
}
else if (transform.position.y < 20 && p2.y < p1.y)
{
float dx = p2.x - p1.x;
float dy = (float)0.6 * (p2.y - p1.y);
//鼠标上下移动
transform.Translate(-dy * Vector3.up * Time.deltaTime);
transform.RotateAround(car.transform.position, Vector3.up, dx * Time.deltaTime);
}
else if (transform.position.y > 130 && p2.y > p1.y)
{
float dx = p2.x - p1.x;
float dy = (float)0.6 * (p2.y - p1.y);
//鼠标上下移动
transform.Translate(-dy * Vector3.up * Time.deltaTime);
transform.RotateAround(car.transform.position, Vector3.up, dx * Time.deltaTime);
}
//下面开始旋转,仅在水平方向上进行旋转
//else if (transform.position.y < 20)
//{
// transform.position.y = 20.1f;
//}
//else if (transform.position.y > 130)
//{
// transform.position.y = 129.9f;
//}
//light.transform.RotateAround(car.transform.position, Vector3.up, dx * Time.deltaTime);
}
//鼠标滚轮控制场景大小
// 如果按住滑轮
if (Input.GetAxis("Mouse ScrollWheel") > 0)
{
Debug.Log(1);
Debug.Log(Input.GetAxis("Mouse ScrollWheel"));
if (normalDistance >= MouseZoomMin && normalDistance <= MouseZoomMax)
{
normalDistance -= Input.GetAxis("Mouse ScrollWheel") * MouseWheelSensitivity;
}
if (normalDistance < MouseZoomMin)
{
normalDistance = MouseZoomMin;
}
if (normalDistance > MouseZoomMax)
{
normalDistance = MouseZoomMax;
}
// transform.Translate(transform.forward * normalDistance);
transform.camera.fieldOfView = normalDistance;
}
//后滚
else if (Input.GetAxis("Mouse ScrollWheel") < 0)
{
Debug.Log(-1);
if (normalDistance >= MouseZoomMin && normalDistance <= MouseZoomMax)
{
normalDistance -= Input.GetAxis("Mouse ScrollWheel") * MouseWheelSensitivity;
}
if (normalDistance < MouseZoomMin)
{
normalDistance = MouseZoomMin;
}
if (normalDistance > MouseZoomMax)
{
normalDistance = MouseZoomMax;
}
// transform.Translate(-transform.forward * normalDistance);
transform.camera.fieldOfView = normalDistance;
}
}
}
分享到:
相关推荐
主要为大家详细介绍了Unity3D使用鼠标旋转缩放平移视角,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了Unity3D实现物体旋转缩放移动的具体代码,供大家参考,具体内容如下 由于项目运行在安卓上,运用到了插件,比较麻烦。你们可以在触发条件上进行修改,不用插件也可以。 1.下载FingerGestures ...
非常实用的unity3d 产品展示 拖拽旋转缩放控制 脚本
unity 3D实现模型的缩放和5旋转功能
完整的工程源码,利用鼠标左键实现平移操作,利用鼠标右键实现旋转操作,利用鼠标滚轮实现缩放操作。具体讲解见https://blog.csdn.net/sunbowen63/article/details/89325314
Unity3D 旋转相机视角 镜头缩放 拖动相机视角 Game视窗还原Sence视窗功能
在UI上 自由观察3D 模型,鼠标控制模型的旋转,缩放&& 触摸屏手势控制模型的旋转缩放控制;这里仅将控制代码挂载到相机上,通过对相机的控制来观察模型。本资源为最小展示单元,仅包含演示场景和1个控制脚本即可完成...
Unity3D教程:物体旋转和缩放的简单demo1
Unity3d 摄像机控制源码(平移,旋转,缩放)
自己一直在用的方法,鼠标和触屏通用,多个参数可以自己调整,注释详细,配置简单,需要的拿去,自己一直在用的方法,多个参数可以自己调整,注释详细,配置简单,需要的拿去
Unity3d实现鼠标中轴滚动缩放相机的代码
Unity3d物体缩放旋转脚本 控制物体的放大缩小 限制在规定的角度内旋转 实现在屏幕上进行滑动对物体进行旋转 双指控制物体大小变化
谁用谁知道。Unity3d 交互功能必备,适合产品全方位展示用。
通过鼠标右键控制旋转,滚轮控制缩放,中键控制平移。基于此可以全方位的查看模型。
Unity3D 运行时 动态生成模型<三> 编辑模型 整改RTGizmo插件,代码整理更清楚流畅,删除不必要的功能
雨松MOMO Unity3D 游戏开发系列博文之Unity3D 游戏引擎之IOS触摸屏手势控制镜头旋转与缩放,欢迎大家下载阅读,哇咔咔~~