Unity3d物体模型(实现旋转缩放平移自动旋转)
基本功能实现:物体通过鼠标左键上下移动,中间键缩放、右键旋转,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);
}
} } } } }
Unity3d物体模型(实现旋转缩放平移自动旋转)的更多相关文章
- OpenGL绘制简单场景,实现旋转缩放平移和灯光效果
本项目实现了用OpenGL绘制一个简单场景,包括正方体.球体和网格,实现了物体的旋转.缩放.平移和灯光效果.附有项目完整代码.有具体凝视.适合刚開始学习的人熟悉opengl使用. 开发情况 开发环境V ...
- osg中使用MatrixTransform来实现模型的平移/旋转/缩放
osg中使用MatrixTransform来实现模型的平移/旋转/缩放 转自:http://www.cnblogs.com/kekec/archive/2011/08/15/2139893.html# ...
- VTK中模型的旋转与平移
当从外界读入STL等三维模型时,其会按照它内部的坐标位置进行显示.因此它的位置和大小是确定的.但是在实际应用中,有可能需要人为地对这个模型在空间中进行旋转.平移或缩放等操作.VTK中有许多和旋转.平移 ...
- 【转载】Unity3D研究院之IOS触摸屏手势控制镜头旋转与缩放
前几篇文章介绍了很多Unity3D引擎自身的一些问题, 今天我们在回到IOS设备上讨论一些触摸屏幕手势,本章的目标是通过触摸iPhone屏幕手势 实现模型左右的旋转,与模型的缩放. 大家想一想模型的旋 ...
- threeJS创建mesh,创建平面,设置mesh的平移,旋转、缩放、自传、透明度、拉伸
这个小案例是当初我在学习的时候,小的一个小案例,代码还需要进一步优化:还请谅解~~:主要用到了threeJS创建mesh,创建平面,设置mesh的平移,旋转.缩放.自传.透明度.拉伸等这些小功能: 采 ...
- 【转载】Unity中矩阵的平移、旋转、缩放
By:克森 简介 在这篇文章中,我们将会学到几个概念:平移矩阵.旋转矩阵.缩放矩阵.在学这几个基本概念的同时,我们会用到 Mesh(网格).数学运算.4x4矩阵的一些简单的操作.但由于克森也是新手,文 ...
- osg矩阵变换节点-----平移旋转缩放
osg矩阵变换节点-----平移旋转缩放 转自:http://www.cnblogs.com/ylwn817/articles/1973396.html 平移旋转缩放这个三个是osg矩阵操作中,最常见 ...
- Blender模型导入进Unity,旋转缩放的调整
Blender跟Unity的XYZ轴不同的原因,导致Blender模型导入Unity之后会发生模型朝向不对. 请先看看下边这个情况: 首先,Blender物体模式下,对模型进行 旋转 缩放,将会在右边 ...
- OpenCV计算机视觉学习(11)——图像空间几何变换(图像缩放,图像旋转,图像翻转,图像平移,仿射变换,镜像变换)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 图像 ...
随机推荐
- Oracle Global Finanicals Technical Reference(一个)
Skip Headers Oracle Global Finanicals Oracle Global Financials Technical Reference Manual Release 11 ...
- 玩转Vim-札记
玩转Vim-札记 距上篇博文已有一周有余,上次主要介绍了编辑器之神Vim的起源.安装并介绍了两种模式以及一些简单的操作.本次将继续对Vim的使用进行介绍. 登堂入室 首先接着说移动吧: 1 0 → 数 ...
- Windows环境搭建与第一个C# Sample
Redis入门 - Windows环境搭建与第一个C# Sample 什么是Redis? Redis是一个开源.支持网络.基于内存.键值对存储数据库,使用ANSI C编写.从2013年5月开始,R ...
- 安卓WindowManager注入事件如何跳出进程间安全限制
在分析monkey源码的时候有些背景知识没有搞清楚,比如在看到monkey是使用windowmanager的injectKeyEvent方法注入事件的时候,心里就打了个疙瘩,这种方式不是只能在当前应用 ...
- Appium Android Bootstrap源码分析之简介
在上一个系列中我们分析了UiAutomator的核心源码,对UiAutomator是怎么运行的原理有了根本的了解.今天我们会开始另外一个在安卓平台上基于UiAutomator的新起之秀--Appium ...
- 转载:Linux Used内存到底到哪里去了?
转自:http://blogread.cn/it/article/6264?f=wb2 有时在Linux下会碰到这样的问题:ps aux看到的RSS内存只有不到30M,但是free看到内存却已经使用了 ...
- Ubuntu终端字体颜色方案
默认: 蓝色代表该文件夹: 绿色代表可运行文件. 红色表示压缩文件. 浅蓝色表示链接文件: 灰色表示其它文件: 红色闪烁表示链接的文件有问题了 黄色表示设备文件. 非常不爽怎么办,改! # Attri ...
- APUE学习笔记(2):lseek()练习与文件洞
对于lseek函数早在大一的C语言课上就有接触,但是几乎没有使用过,只记得是和文件偏移操作相关的 看了APUE上的示例,又使用od工具查看了内容,果然很神奇,很新鲜 figure3.2.c [c] # ...
- leetcode第九题--Palindrome Number
Problem: Determine whether an integer is a palindrome. Do this without extra space. click to show sp ...
- SQL Mon 介绍
原文:SQL Mon 介绍 这是一个相当高级的SQL Server监控工具,全面监控SQL Server的活动与性能,分析性能瓶颈,给出优化建议. red-gate有一个在线的数据库监控工具,不过那个 ...