Unity3D 学习教程 14 C# 旋转镜头

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. }
时间: 2024-12-24 12:56:03

Unity3D 学习教程 14 C# 旋转镜头的相关文章

Unity3D 学习教程 9 旋转 放大 移动 物体

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 点击选中物体 点击控制面板快捷栏 1 是平移镜头 2 是移动物体 点击箭头平移 3是转动物体 点击线圈转动 4 是 放大缩小物体 520 520小说 小说520 小说5205200 小说5200 5200小说 5200小说网 www.520bo

Unity3D 学习教程 1 入门

unity3d_4.0下载含安装教程 免费:可以随意下载或者观看 百度下载地址(提取码91x6) 视频教程下载 unity3d_4.0下载含安装教程 unity3d脚本下载含八百个实例教程打包 unity3d4.5下载含破解补丁 Unity5下载32位64位含破解补丁 unity3d视频教程 Unity3D游戏制作 Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专

Unity3D 学习教程 12 C# 发射炮弹

建立一个炮弹 一个球体 双击脚本 进入编辑器 1 using UnityEngine; 2 using System.Collections; 3 4 public class acc : MonoBehaviour { 5 6 // Use this for initialization 7 public Transform Q; 8 int speed=50; 9 void Start () { 10 11 } 12 13 // Update is called once per frame

Unity3D 学习教程 11 c#脚本控制摄像头

首先新建一个脚本 点击创建一个文件夹起名C# 点击文件夹 创建一个C#脚本 建好文件后 双击文件 启动脚本编辑器 void Start () 是场景运行时加载程序 void Update ()  是每调用一针执行一次  可以认为是试试执行的程序 下面编写第一个脚本 控制摄像机移动 using UnityEngine; using System.Collections; public class acc : MonoBehaviour { int speed=50; void Start () {

Unity3D 学习教程 13 C# 销毁炮弹

gameObject.renderer.enabled //是控制一个物体是否在屏幕上渲染或显示  而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的 GameObject.Destroy()  //表示移除物体或物体上的组件 代表销毁该物体  实际上该物体的内存并没有立即释放 而是在你下下个场景中槽释放内存资源,就是你a场景中Destroy了 一般是在c场景中才真正释放该物体的内存资源(这是我的体会 不知道理解错误没) gameObject.active   //是否在场景中

Unity3D 学习教程 6 基本操作

打开文件 新建一个场景 ------------------------------------------------------------------ 打开一个场景 ---------------------------------------------------------------------------- 保存场景 ----------------------------------------------------------------------------------

Unity3D 学习教程 3 了解工程面板

首先我们来了解一下工程面板 file  是文件目录 hierarchy  层次结构  创建Unity3D自带控件的地方 --------------------------------------------华丽的分割线--------------------------------------------------------------- projct 项目 资源存放在这里 --------------------------------------------华丽的分割线--------

Unity3D 学习教程 7 基本应用与添加刚体

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 创建一个立方体 按 F2  改名 名字改完后 修改位置 把它放在000 处 我们把y改为10  让它悬在空中 下面就让物体拥有重力.质量  ,就要给物体添加刚体组件 点击物体 点击属性面板 Add component   选择 Physics

Unity3D 学习教程 2 创建游戏工程与界面

新建一个项目 u3D 对中文支持不太好  尽量不要用中文 一定不要用中文 点击创建 Create 界面创建成功 场景自带一个主摄像机 少于200字的文章不允许发布到首页候选区  要200字啊  我多加一点  不知道可不可以  图片不算怎么办  码字吧  哎~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~