Skip to main content
VRCHINA
AR论坛
 首页 » 资源教程 » Unity3D教程

unity基础开发----物品展示必备代码(旋转,缩放)

2016年09月05日 17:26:574980
  1. using UnityEngine;  
  2.   
  3. public class MouseFollowRotation : MonoBehaviour {  
  4.   
  5.     public Transform target;              
  6.     public float xSpeed=200, ySpeed=200, mSpeed=10;  
  7.     public float yMinLimit=-50, yMaxLimit=50;  
  8.     public float distance=7, minDistance=2, maxDistance=30;  
  9.       
  10.     //bool needDamping = false;  
  11.     public bool needDamping =true;   
  12.     float damping = 5.0f;  
  13.       
  14.     public float x = 0.0f;  
  15.     public float y = 0.0f;  
  16.       
  17.       
  18.     public void SetTarget( GameObject go )  
  19.       
  20.       
  21.     {  
  22.         target = go.transform;  
  23.     }  
  24.     // Use this for initialization  
  25.     void Start () {  
  26.         Vector3 angles = transform.eulerAngles;  
  27.         x = angles.y;  
  28.         y = angles.x;  
  29.     }  
  30.       
  31.     // Update is called once per frame  
  32.     void LateUpdate ()   
  33.     {  
  34.           
  35.       
  36.         if (target)   
  37.         {  
  38.         //use the light button of mouse to rotate the camera  
  39.             if( Input.GetMouseButton(0) )  
  40.             {  
  41.                 x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;  
  42.                 y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;  
  43.                   
  44.                 y = ClampAngle(y, yMinLimit, yMaxLimit);  
  45.                   
  46.                 //print(Input.GetAxis("Mouse X"));  
  47.                 //print( Input.GetAxis("Mouse Y"));  
  48.                 //print(x);  
  49.                 //print(y);  
  50.   
  51.                 
  52.   
  53.             }   
  54.   
  55.                       
  56.              distance -= Input.GetAxis("Mouse ScrollWheel")*mSpeed;  
  57.             distance = Mathf.Clamp(distance, minDistance, maxDistance);  
  58.                   
  59.               
  60.             Quaternion rotation = Quaternion.Euler(y, x, 0.0f);  
  61.             Vector3 disVector = new Vector3( 0.0f, 0.0f, -distance );  
  62.             Vector3 position = rotation * disVector + target.position;  
  63.             //adjust the camera  
  64.             if( needDamping )  
  65.             {  
  66.                 transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime*damping);  
  67.                 transform.position = Vector3.Lerp(transform.position, position, Time.deltaTime*damping);  
  68.             }  
  69.             else  
  70.             {  
  71.                 transform.rotation = rotation;  
  72.                 transform.position = position;  
  73.             }  
  74.               
  75.               
  76.         }  
  77.     }  
  78.       
  79.     static float ClampAngle (float angle, float min, float max)   
  80.     {  
  81.     if (angle < -360)  
  82.         angle += 360;  
  83.     if (angle > 360)  
  84.         angle -= 360;  
  85.     return Mathf.Clamp (angle, min, max);  
  86.     }  
  87. }  

 按住鼠标中间平移物体(js)

[javascript] view plain copy
  1. var moveSpeed : float = 1;   
  2. var cam : Transform;  
  3.    
  4. function Update () {  
  5.     if (Input.GetMouseButton(1))//按下鼠标右键   
  6.     {  
  7.         transform.rotation = cam.rotation;//cam旋转等于Transform  
  8.         transform.Translate(Vector3.right * -Input.GetAxis("Mouse X") * moveSpeed); //  
  9.         transform.Translate(transform.up * -Input.GetAxis("Mouse Y") * moveSpeed, Space.World);   
  10.     }  
  11. }  

按住鼠标中间平移物体(C#)

[csharp] view plain copy
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4.   
  5. public class GameObjectMove : MonoBehaviour {  
  6.     public float moveSpeed = 1;  
  7.     public Transform moveGameObject;  
  8.      
  9.     // Use this for initialization  
  10.     void Start () {  
  11.       
  12.     }  
  13.       
  14.     // Update is called once per frame  
  15.     void Update () {  
  16.         if(Input.GetMouseButton(2))  
  17.         {  
  18.             transform.rotation = moveGameObject.rotation;  
  19.             transform.Translate(-Vector3.right*Input.GetAxis("Mouse X")*moveSpeed);  
  20.             transform.Translate(transform.up*Input.GetAxis("Mouse Y")*moveSpeed,Space.World);  
  21.         }  
  22.       
  23.     }  
  24. }  
评论列表暂无评论
发表评论