Unity 相机平移旋转缩放

Posted huojiaoqingchun0123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 相机平移旋转缩放相关的知识,希望对你有一定的参考价值。

内容不多,一个脚本,直接上代码

技术图片
 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 
 5 public class Move : MonoBehaviour
 6 {
 7 
 8     float speed = 20;
 9     public float distance_v;
10     public float distance_h;
11     public float rotation_H_speed = 1;
12     public float rotation_V_speed = 1;
13     public float max_up_angle = 80;              //越大,头抬得越高
14     public float max_down_angle = -60;           //越小,头抬得越低
15 
16 
17     private float current_rotation_H;  //水平旋转结果
18     private float current_rotation_V;  //垂直旋转结果
19     void LateUpdate()
20     {
21         // 旋转
22         if (Input.GetMouseButton(1))
23         {
24             //控制旋转
25             current_rotation_H += Input.GetAxis("Mouse X") * rotation_H_speed;
26             current_rotation_V += Input.GetAxis("Mouse Y") * rotation_V_speed;
27             //current_rotation_V = Mathf.Clamp(current_rotation_V, max_down_angle, max_up_angle);       //限制垂直旋转角度
28             transform.localEulerAngles = new Vector3(-current_rotation_V, current_rotation_H, 0f);
29             transform.Translate(Vector3.back * distance_h, Space.Self);
30             transform.Translate(Vector3.up * distance_v, Space.World);          //相对于世界坐标y轴向上
31         }
32 
33         // 平移
34         if (Input.GetMouseButton(2))
35         {
36             this.transform.Translate(new Vector3(-Input.GetAxis("Mouse X") * rotation_H_speed, -Input.GetAxis("Mouse Y") * rotation_V_speed, 0f));
37         }
38     }
39     // Use this for initialization
40     void Start()
41     {
42 
43     }
44 
45     // Update is called once per frame
46     void Update()
47     {
48         // 移动
49         if (Input.GetKey(KeyCode.A)) //左移
50         {
51             transform.Translate(Vector3.left * speed * Time.deltaTime);
52         }
53         if (Input.GetKey(KeyCode.D)) //右移
54         {
55             transform.Translate(Vector3.right * speed * Time.deltaTime);
56 
57         }
58         if (Input.GetKey(KeyCode.W)) //前移
59         {
60             transform.Translate(Vector3.forward * speed * Time.deltaTime);
61 
62         }
63         if (Input.GetKey(KeyCode.S)) //后移
64         {
65             transform.Translate(Vector3.back * speed * Time.deltaTime);
66 
67         }
68 
69         // 缩放
70         if (Input.GetAxis("Mouse ScrollWheel") != 0)
71         {
72             //获取鼠标滚轮的滑动量
73             float wheel = Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * 5000;
74 
75             //改变相机的位置
76             this.transform.Translate(Vector3.forward * wheel);
77         }
78     }
79 }
Camera

 

以上是关于Unity 相机平移旋转缩放的主要内容,如果未能解决你的问题,请参考以下文章

unity 3D 实现场景旋转平移缩放

Unity3D3D 视图操作 ( 视图基本元素 | 导航器 | 栅格 | 天空盒 | 3D 视图操作 | 视图旋转 | 视图缩放 | 视图平移 | 导航器操作 | 恢复方向 | 顶右前视图 )

unity PC和移动端 摄像机围绕目标物体transform组件 旋转 缩放(改变相机position)

unity3d中点击一个按钮实现相机之间的转换,点选已添加物体,并使用键盘实现移动鼠标实现旋转缩放操作

在 SceneKit 中禁用相机平移

平移手势(按住/拖动)缩放相机,如 Snapchat