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); } } } } } }