资源简介
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#远程备份、单机备份自写Demo
- C# 串口助手波形显示
- Unity3D场景中画线脚本
- C#源码:IP、MAC、DNS、网关自动修改成
- C#WebSocket初学者必备
- 基于C#的洗衣管理系统
- c# socket demo 已经封装成共通
- C#根据月份和订票数量决定机票价格的
- C#Excel大量数据快速导入数据库
- C#简易WebSocket通信(非服务器实现)
- C# Winform 嵌入Google浏览器 Chrome 与JS交
- 《Unity5实战使用C#和Unity开发多平台游
- C# winform ATM-自动取款机模拟软件设计
- C# SQL教师信息管理系统
- C# 做的WINDOWS窗体程序-简易计算器
- C#完成的个人理财系统
- C#AJAX
- C#基于Halcon实现Basler相机采图SDK
- C#引入Redis时所需四个DLL
- C#获取usb设备VID和PID
- C#实现复数类,包括加减乘除乘方开方
- C#图像二值化代码
- 用遗传算法/模拟退火算法 求解旅行商
- 基于C#开发的图片处理工具
- C#简单工厂模式计算器
- C#SerialPort通信详细介绍
- 用C#窗体画一个可以指定角度的倾斜椭
- C# 实现贪吃蛇小游戏的设计编写
- winform窗体实现验证码功能
- C# winfrom窗体显示百度地图
评论
共有 条评论