【Unity3D自学记录】物品展示必备(旋转与缩放)

01 using UnityEngine;
02 using System.Collections;
03 // 直接放在相机上,控制相机的旋转和缩放 //
04 public class CameraContro : MonoBehaviour {
05      
06     public Transform target;            
07     public float xSpeed=200, ySpeed=200, mSpeed=10;
08     public float yMinLimit=-50, yMaxLimit=50;
09     public float distance=7, minDistance=2, maxDistance=30;
10      
11     //bool needDamping = false;
12     public bool needDamping =true
13     float damping = 5.0f;
14      
15     public float x = 0.0f;
16     public float y = 0.0f;
17      
18      
19     public void SetTarget( GameObject go )
20          
21          
22     {
23         target = go.transform;
24     }
25     // Use this for initialization
26     void Start () {
27         Vector3 angles = transform.eulerAngles;
28         x = angles.y;
29         y = angles.x;
30     }
31      
32     // Update is called once per frame
33     void LateUpdate () 
34     {
35          
36          
37         if (target) 
38         {
39             //use the light button of mouse to rotate the camera
40             if( Input.GetMouseButton(0) )
41             {
42                 x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
43                 y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
44                  
45                 y = ClampAngle(y, yMinLimit, yMaxLimit);
46                  
47                 //print(Input.GetAxis("Mouse X"));
48                 //print( Input.GetAxis("Mouse Y"));
49                 //print(x);
50                 //print(y);
51                  
52                 //<a href="http://www.unitymanual.com" target="_blank" class="relatedlink">unity3d</a>教程手册:www.unitymanual.com
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             //Unity3D教程手册:www.unitymanual.com
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 }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值