资源简介
Unity GameView相机移动和旋转脚本,支持相机移动,自转,公转
使用方法,需要移动的相机GameObject上挂上该脚本
W / ↑:向前移动;
S / ↓:向后移动;
A / ←:向左移动;
D / →:向右移动;
Q:向下移动;
E:向上移动;
鼠标中键滚动:缩放(相机FOV);
按住鼠标左键移动:上下左右移动;
按住鼠标右键移动:相机自身旋转(俯仰和偏航);
按住ctrl键并用鼠标左键点击物体:看向该物体,并设置该物体为公转中心;点击没有物体的地方取消选中
按住ctrl键并按住鼠标右键移动:绕公转中心旋转(没有选中物时默认以相机前3m的虚拟焦点旋转);
代码片段和文件信息
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
[RequireComponent(typeof(Camera))]
public class CameraMovement : MonoBehaviour {
private Camera cam;
public float moveSpeed = 10.0f;
public float zoomSpeed = 20.0f;
public float dragSpeed = 1.0f;
public float resolutionRadius = 3.0f;
public float resolutionSpeed = 0.1f;
public float rotationSpeed = 5.0f;
public Transform selected;
private const string MouseX = “Mouse X“;
private const string MouseY = “Mouse Y“;
// Use this for initialization
void Start () {
cam = GetComponent();
}
// Update is called once per frame
void Update () {
var e = Event.current;
var deltaTime = Time.deltaTime;
var camTrans = cam.transform;
Vector3 translation = Vector3.zero;
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) // front
{
translation += camTrans.forward * moveSpeed * deltaTime;
}
else if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) //back
{
translation += -camTrans.forward * moveSpeed * deltaTime;
}
if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
{
translation += -camTrans.right * moveSpeed * deltaTime;
}
else if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
{
translation += camTrans.right * moveSpeed * deltaTime;
}
if (Input.GetKey(KeyCode.Q)) // down
{
translation += -Vector3.up * moveSpeed * deltaTime;
}
else if (Input.GetKey(KeyCode.E)) // up
{
translation += Vector3.up * moveSpeed * deltaTime;
}
if (Input.GetMouseButton(0)) // xy translate
{
var drag = Input.GetAxis(MouseX) * dragSpeed;
translation += -camTrans.right * drag;
drag = Input.GetAxis(MouseY) * dragSpeed;
translation += -camTrans.up * drag;
}
camTrans.position = camTrans.position + translation;
if (Input.GetMouseButton(1))
{
if (Input.GetKey(KeyCode.Left
- 上一篇:C# 串口助手波形显示
- 下一篇:C#远程备份、单机备份自写Demo
相关资源
- C# IP地址输入控件
- C#在一个窗口刷新更改另一个窗口控件
- C# TIP文件生成和拆解
- C#解析HL7消息的库135797
- C# OCR数字识别实例,采用TessnetOcr,对
- 考试管理系统 - C#源码
- asp.net C#购物车源代码
- C#实时网络流量监听源码
- C#百度地图源码
- Visual C#.2010从入门到精通配套源程序
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
评论
共有 条评论