if(Input.GetKey(KeyCode.Q))
{
transform.Rotate(0,-50*Time.deltaTime,0,Space.Self);
}
if(Input.GetKey(KeyCode.E))
{
transform.Rotate(0,50*Time.deltaTime,0,Space.Self);
}

模仿WOW镜头操作

  1. using UnityEngine;
  2. using System.Collections;
  3. ///
  4. /// 将此脚本附加到任意镜头上,可以使其拥有WOW镜头的控制方式
  5. ///
  6. public class WowCamera : MonoBehaviour
  7. {
  8. ///
  9. /// 镜头目标
  10. ///
  11. public Transform Target;
  12. ///
  13. /// 镜头离目标的距离
  14. ///
  15. public float Distance = 30.0f;
  16. ///
  17. /// 最大镜头距离
  18. ///
  19. public float MaxDistance = 30.0f;
  20. ///
  21. /// 鼠标滚轮拉近拉远速度系数
  22. ///
  23. public float ScrollFactor = 10.0f;
  24. ///
  25. /// 镜头旋转速度比率
  26. ///
  27. public float RotateFactor = 10.0f;
  28. ///
  29. /// 镜头水平环绕角度
  30. ///
  31. public float HorizontalAngle = 45;
  32. ///
  33. /// 镜头竖直环绕角度
  34. ///
  35. public float VerticalAngle = 0;
  36. private Transform mCameraTransform;
  37. void Start()
  38. {
  39. mCameraTransform = transform;
  40. }
  41. void Update()
  42. {
  43. //滚轮向前:拉近距离;滚轮向后:拉远距离
  44. var scrollAmount = Input.GetAxis(GameSetting.MouseScrollWheel);
  45. Distance -= scrollAmount * ScrollFactor;
  46. //保证镜头距离合法
  47. if (Distance < 0)
  48. Distance = 0;
  49. else if (Distance > MaxDistance)
  50. Distance = MaxDistance;
  51. //按住鼠标左右键移动,镜头随之旋转
  52. var isMouseLeftButtonDown = Input.GetMouseButton(0);
  53. var isMouseRightButtonDown = Input.GetMouseButton(1);
  54. if (isMouseLeftButtonDown || isMouseRightButtonDown)
  55. {
  56. Screen.lockCursor = true;
  57. var axisX = Input.GetAxis(GameSetting.MouseX);
  58. var axisY = Input.GetAxis(GameSetting.MouseY);
  59. HorizontalAngle += axisX * RotateFactor;
  60. VerticalAngle += axisY * RotateFactor;
  61. if (isMouseRightButtonDown)
  62. {
  63. //如果是鼠标右键移动,则旋转人物在水平面上与镜头方向一致
  64. Target.rotation = Quaternion.Euler(0, HorizontalAngle, 0);
  65. }
  66. }
  67. else
  68. {
  69. Screen.lockCursor = false;
  70. }
  71. //按镜头距离调整位置和方向
  72. var rotation = Quaternion.Euler(-VerticalAngle, HorizontalAngle, 0);
  73. var offset = rotation * Vector3.back * Distance;
  74. mCameraTransform.position = Target.position + offset;
  75. mCameraTransform.rotation = rotation;
  76. }
  77. }

转载于:https://www.cnblogs.com/goodchenqing/p/4268675.html

Unity3D 学习教程 14 C# 旋转镜头相关推荐

  1. 【Metashape精品教程14】五镜头倾斜数据空三 空三成果导入CC

    [Metashape精品教程14]五镜头倾斜数据空三 空三成果导入CC 文章目录 [Metashape精品教程14]五镜头倾斜数据空三 空三成果导入CC 前言 一.创建工程 1.1导入照片 1.2设置 ...

  2. Unity3D 学习教程 4 创建物体

    点击红线部分 创建一个物体 创建一个立方体 ------------------------------------------效果---------------------------------- ...

  3. 迷你MVVM框架 avalonjs 学习教程14、事件绑定

    之前的章节许多示例代码也或多或少地展示了如何使用ms-click来绑定事件了.能直接在模板上绑定是事件,这也是静态模板与动态绑定的一大区别.ms-click不是简单的onclick的别名,它在内部屏蔽 ...

  4. CityMaker学习教程14 水面图层的创建

    在CityMaker中,图层的创建稍显麻烦,现在讲下如何创建水面层. 1.打开Builder并创建一个空的场景. 2.创建一个空的数据源或者选择一个没加载的数据源. 3.右键数据源,创建个数据集,或者 ...

  5. 深度学习教程(10) | 卷积神经网络解读(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/35 本文地址:http://www.showmeai.tech/article-det ...

  6. 深度学习教程(6) | 神经网络优化算法(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/35 本文地址:https://www.showmeai.tech/article-d ...

  7. 【Unity3D基础教程】给初学者看的Unity教程(零):如何学习Unity3D

    转自:https://www.cnblogs.com/neverdie/p/How_To_Learn_Unity3D.html(http://www.cnblogs.com/neverdie/) Un ...

  8. oracle安装搜狗输入法教程,Linux入门学习教程:在Ubuntu 14.04中安装使用搜狗拼音输入法...

    然后,访问搜狗输入法Linux版的官网,http://pinyin.sogou.com/linux,下载搜狗输入法Linux版.从官网可以看到,该输入法官方只支持Ubuntu(不过网上有人通过将deb ...

  9. UE5和Blender中的完整场景环境创建学习教程

    UE5和Blender中的完整环境创建–深入课程 MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确)|时长:80 ...

最新文章

  1. 解决: is not accessible from java.lang.Class android.app.AppComponentFactory
  2. ORACAL去除表中null转化为0
  3. 35佳国外顶级品牌企业网站设计案例(上)
  4. SSH远程联机Linux服务器简易安全设定
  5. csv处理数据后存入数据库
  6. 表、栈和队列(JAVA实现)
  7. T3 - 构建大型 Web 应用的 JavaScript 框架
  8. 网站COM组件调用失败解决办法
  9. 计算机触摸板设置方法,笔记本的触摸板怎么用_笔记本电脑触摸板的使用教程-win7之家...
  10. FlashFXP,FlashFXP的详细介绍
  11. 边境的悍匪—机器学习实战:第七章 集成学习和随机森林
  12. PR视频去水印—中间值
  13. 蓝奏云分享文件无法下载地址失效的解决办法
  14. 干了这碗蛋炒饭 继续APP性能提升
  15. js如何将时间的标准格式和时间戳格式和2022-01-27 00:00:00(年月日时分秒)格式相互转换
  16. Category的底层分析
  17. python数组展示_python 显示数组全部元素的方法
  18. 关于信息熵最大值的讨论
  19. 《我是一只IT小小鸟》读书笔记3
  20. 供销合作社改革聚合力 国稻种芯-兰州榆中:构建现代流通体系

热门文章

  1. Netty工作笔记0016---Buffer的分散和聚合
  2. Netty工作笔记0011---Channel应用案例2
  3. SpringCloud工作笔记052---SpringCloud打包部署流程_打包时报错: BeanCreationNotAllowedException: Error creating bean w
  4. 2015年3月31号日志
  5. 【JAVA基础】HashSet、LinkedHashSet、TreeSet使用区别
  6. IOS div上下滑动效果
  7. fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC sha
  8. 3d激光雷达开发(基于参数模型的滤波)
  9. 嵌入式操作系统内核原理和开发(通用优先级调度)
  10. 一步一步写算法(之排序二叉树删除-3)