Unity3d物体模型(实现旋转缩放平移自动旋转)
自动 实现 模型 Unity3D 旋转 缩放 物体 平移
2023-09-27 14:23:51 时间
基本功能实现:物体通过鼠标左键上下移动,中间键缩放、右键旋转,30秒没操作,物体自动旋转
实例代码:
using UnityEngine; using System.Collections; public class Script_07_11 : MonoBehaviour { public Transform target; private int MouseWheelSensitivity = 50; private int MouseZoomMin = 20; private int MouseZoomMax = 112; private float normalDistance = 500; private bool flag_Roable = true;//自动旋转标志 private Vector3 normalized; private float xSpeed = 250.0f; private float ySpeed = 120.0f; private float x = 0.0f; private float y = 0.0f; private System.DateTime oldTime; private System.DateTime nowTime; void Start () { oldTime = System.DateTime.Now; //transform.LookAt(target); } void Update () { nowTime = System.DateTime .Now; System.TimeSpan ts1 = new System.TimeSpan(oldTime.Ticks); System.TimeSpan ts2 = new System.TimeSpan(nowTime.Ticks); System.TimeSpan ts = ts2.Subtract(ts1).Duration(); if(ts.Seconds>30 && !Input.anyKey) { flag_Roable = true; oldTime = System.DateTime.Now; } if(flag_Roable && Input.anyKey) { flag_Roable = false; } if(flag_Roable)//自动旋转 { x-=Time.deltaTime*30; var rotation = Quaternion.Euler(0,x,0); transform.RotateAround(target.position,Vector3.up,0.3f); } else { if(Input.GetMouseButton(1)) { if(Input.GetAxis("Mouse X")<0) transform.RotateAround(target.position,Vector3.down,4); if(Input.GetAxis("Mouse X")>0) transform.RotateAround(target.position,Vector3.up,4); } else if (Input.GetAxis("Mouse ScrollWheel") != 0) { //normalized = (transform.position - CameraTarget).normalized; if (normalDistance >= MouseZoomMin && normalDistance <= MouseZoomMax) { normalDistance -= Input.GetAxis("Mouse ScrollWheel") * MouseWheelSensitivity; } if (normalDistance < MouseZoomMin) { normalDistance = MouseZoomMin; } if (normalDistance > MouseZoomMax) { normalDistance = MouseZoomMax; } //transform.position = normalized * normalDistance; transform.camera.fieldOfView = normalDistance; } else if(Input.GetMouseButton(0)) { //print("wyz-==="+Input.GetAxis("Mouse Y")); if(Input.GetAxis("Mouse Y")<0) //down { Vector3 temp=Vector3.up * 60.0f * Time.deltaTime; print("wyz==up==="+transform.localPosition.y); if(transform.localPosition.y>300) { temp=Vector3.up * 5.0f * Time.deltaTime; transform.Translate(temp); } else { transform.Translate(temp); } } if(Input.GetAxis("Mouse Y")>0) //up { print("wyz==donw==="+transform.localPosition.y); Vector3 temp=Vector3.down * 60.0f * Time.deltaTime; if(transform.localPosition.y<-300) { temp=Vector3.up * 5.0f * Time.deltaTime; transform.Translate(temp); } else { transform.Translate(temp); } } } } } }
相关文章
- 智能车竞赛自动裁判系统
- CodeArea组件,实现失去焦点,自动格式化
- 【Linux】linux中自动定时备份mysql数据
- 自动部署服务器代码
- ThinkPHP3.1快速入门(12)自动验证
- 超简单集成华为HMS ML Kit文本识别SDK,一键实现账单号自动录入
- Python OpenCV实现文档自动矫正(含源码和测试数据)
- 基于C++实现分析表自动构造程序【100010770】
- 江帅帅:Spring Boot 底层级探索系列 02 - 自动配置的底层逻辑
- Android实现应用下载并自动安装apk包
- oracle自动选择索引
- 使用autoscan自动生成makefile文件
- input标签在谷歌浏览器记住密码的自动填充问题
- linux 自动同步时间脚本
- Linux 定期自动备份文件夹脚本
- 【Unity3D日常开发】自动寻路系统Navigation实现人物上楼梯、走斜坡、攀爬、跳跃
- cocos2dx lua 绑定:自动绑定自定义类中的函数 【转载】
- odoo 博客 图书目录 结构及数据自动生成
- odoo15 po文件自动翻译器
- Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理
- Google Home自动介绍新片上映 谷歌:这不是广告
- 通过Keepalived实现Redis Failover自动故障切换功能[实践分享] =转载
- C#Winform程序如何发布并自动升级(图解)
- Gitlab+Jenkins通过钩子实现自动部署web项目,图文详细教程
- Java中核心注解的作用及其使用,了解Spring容器装载的过程和机制,自定义注解来实现自动配置项目依赖环境,包括mybatis、Dubbo、log4j、RabbitMQ、redis相关等自动配置
- CentOS重启自动启动tomcat
- 使用自动获取IP地址后,无法访问局域网中以机器名开头的文件共享