Unity 3D鼠标操作实现旋转、缩放观察物体
1.实现思路:操作摄像头围绕物体中心点(远点),做球面旋转移动来实现旋转观察物体,控制球的半径大小来实现物体的缩放效果。
2.C#摄像头源码脚本
//放在摄像头上,实现旋转、缩放观察物体
using UnityEngine;public class BaseCam : MonoBehaviour
{public Vector3 mousePos1; //记录鼠标点下去瞬间的位置public Vector3 mousePos2; //记录鼠标任何时刻的位置public Quaternion start_qua; //角度使用四元数public Vector3 start_pos; //位置坐标// Use this for initializationvoid Start(){//记录相机开始的角度与位置start_qua = transform.rotation;start_pos = transform.position;}// Update is called once per framevoid Update(){//记录鼠标实时移动的点mousePos2 = Input.mousePosition; }void OnGUI(){//鼠标左键if (Input.GetMouseButton(0)){mousePos1 = Input.mousePosition; //记录鼠标点击瞬间的点Vector3 offset = mousePos1 - mousePos2; //记录鼠标移动的距离//上下与左右 旋转分开,绝对值比较if (Mathf.Abs(offset.x) > Mathf.Abs(offset.y)){//以物体上方为旋转轴(Vector3.up == new Vector3(0, 1.0f, 0)),物体左右旋转角度与鼠标横向移动距离相关,变化速率2ftransform.RotateAround(new Vector3(0, 0, 0), Vector3.up, Time.deltaTime * offset.x * 2f); }else{//以世界坐标右方为旋转轴(transform.right,是会变化的量),物体上下旋转角度与鼠标纵向移动距离相关,变化速率2ftransform.RotateAround(new Vector3(0, 0, 0), transform.right, -Time.deltaTime * offset.y * 2f);}//打印数据transform.right变量Debug.Log("pos: " + transform.right);}//鼠标中键,物体恢复原来的角度与位置if (Input.GetMouseButton(2)){transform.rotation = start_qua;transform.position = start_pos;}//鼠标中键滑动,物体缩放,摄像头前后移动距离范围在2f~5f,变化速率3fif (Input.GetAxis("Mouse ScrollWheel") > 0f && Vector3.Distance(transform.position, new Vector3(0, 0, 0)) > 2f){transform.Translate(Vector3.forward * Time.deltaTime * Input.GetAxis("Mouse ScrollWheel") * 5f);}if (Input.GetAxis("Mouse ScrollWheel") < 0f && Vector3.Distance(transform.position, new Vector3(0, 0, 0)) <5f){transform.Translate(Vector3.back * Time.deltaTime * (-Input.GetAxis("Mouse ScrollWheel")) * 5f);}}
}
Unity 3D鼠标操作实现旋转、缩放观察物体相关推荐
- 【Unity3D】3D 视图操作 ( 视图基本元素 | 导航器 | 栅格 | 天空盒 | 3D 视图操作 | 视图旋转 | 视图缩放 | 视图平移 | 导航器操作 | 恢复方向 | 顶、右、前视图 )
文章目录 一.3D 视图基本元素 1.导航器 Gizmo 2.栅格 Grid 3.天空盒 Skybox 二.3D 视图操作 1.视图旋转 2.视图缩放 3.视图平移 三.导航器操作 1.恢复方向 2. ...
- Unity通过鼠标操作来控制场景视角(包括旋转、平移以及缩放)
首先,本博客转自该博客 https://www.cnblogs.com/machine/p/unity.html ,在此记录只是为了防止博客删除或者书签找不到,所以重新在此记录一下. 1. 在摄像头& ...
- Unity摄像机控制插件移动旋转缩放聚焦自动居中
目录 前言 一.主要特点 二.使用步骤 1.导入插件 2.拖入SR_Camera Prefab到Hierarchy场景中 3.设置场景中需要交互的物体和默认射线检测的地面层 4.限制摄像机的可移动范围 ...
- Unity 3D模型展示框架篇之自由观察(Cinemachine)
本项目将整合之前Unity程序基础小框架专栏在Unity 3D模型展示项目基础上进行整合,并记录了集成过程中对原脚本的调整过程.增加了Asset Bundle+ILRuntime热更新技术流程. 在U ...
- Unity鼠标拖动物体、按下鼠标左键旋转观察物体、鼠标滚轮缩放视野
如题目所示,本文实现这三个效果.所有代码都在pc端成功运行,移植到手机端改变相应的判断条件即可,核心算法没有问题. 一. 鼠标拖拽移动物体 效果演示 源代码 public class mousedra ...
- unity 3D模型展示旋转缩放
目标: 在UI层上 自由观察3D 模型,实现鼠标控制模型的旋转,缩放&& 触摸屏手势控制模型的旋转缩放控制: 这里仅将控制代码挂载到相机上,通过对相机的控制来观察模型. 基本上为最小单 ...
- Unity 3D系列 摄像机围绕主角进行旋转、缩放
一.开发环境 Unity版本: 2020.1.0f1 二.建立摄像机结构 1.结构如下图 2.将CameraZoomContainer的Position X坐标设置为12,如图 3.将CameraUp ...
- Unity 在zSpace上使用鼠标控制相机旋转和鼠标指引式放大缩小,在触屏上手势位置为中心放大缩小
在zSpace上使用鼠标控制相机旋转和鼠标指引式放大缩小,在触屏上手势位置为中心放大缩小 鼠标和触屏的操作 下面展示一些 内联代码片. using System; using System.Colle ...
- Unity3D使用鼠标旋转缩放平移视角
Unity使用鼠标旋转缩放平移视角 用代码在Game界面完美实现Scene界面的操作方法. 使用方法:把脚本挂在相机上,把跟踪的target拖到脚本上. 视角跟踪的是一个空物体,当然如果你是做RPG游 ...
最新文章
- 为什么“晚上9点钟洗澡的大学生成绩更好”?
- 3D视觉创新应用(三维重建)竞赛作品系列——多楼层室内环境下的三维几何重建
- Adam真的是最好的优化器吗?有人认为不过是神经网络进化的结果
- apxs php5,安装PHP5和PHP7
- 应用层组播、IP组播
- java程序员面试技术_java程序员面试应该具备的一些基本技能
- ROS: global_planner 整体解析
- 精通 Oracle+Python,第 4 部分:事务和大型对象
- java工作流 表设计_创建activiti工作流所需23张表
- 程序发布以后,如何修改安装URL
- 联合光伏回应“天价收购”质疑:并非每瓦10.24元
- websocket 聊天室 demo ( tornado + nginx + wss + 在线demo)
- matlab什么样的数表示0,matlab里a(i)~=0什么意思
- 区块链 之 以太坊的那些坑
- 网页|利用touch实现下拉刷新
- centos7 gitlab的私有化部署
- 关于如何获得虚拟机还是真机信息
- MES系统的选择需考虑什么?
- JZOJ 5947. 【NOIP2018模拟11.02】初音未来
- 项目中怎样做技术选型
热门文章
- 行高line-height,以及基线、顶线、中线和底线,还有内容区域、行内框和行框 by 豆豆猫的窝...
- 10 个用于收集硬件信息的 Linux 命令
- Docker - 相较于虚拟机的优势,以及为什么要使用docker
- Linux 安装 Intel 网卡驱动
- 如何在word中的方框中打勾
- 固态硬盘linux 性能,一种提高linux系统固态硬盘性能的方法与流程
- JSOI2008 小店购物
- mvc+xrecyclerview+SQL+自定义控件
- 西安交通大学计算机学院贾宇轩,CCF西安交通大学学生分会成立
- c语言杀我,ballball各位大佬救救我吧