本文实例为大家分享了Unity3D实现摄像机镜头移动并限制角度的具体代码,供大家参考,具体内容如下

摄像机镜头跟随鼠标移动,并限制上下左右的移动角度

public class ViewFromCream : MonoBehaviour

{

public int speed=5;

public Vector3 vect;

private float xcream;

private float ycream;

public void Update()

{

CreamView();

}

private void CreamView()

{

float x = Input.GetAxis("Mouse X");

float y = Input.GetAxis("Mouse Y");

if (x!=0||y!=0)

{

LimitAngle(60);

LimitAngleUandD(60);

this.transform.Rotate(-y * speed, 0, 0);

this.transform.Rotate(0, x * speed, 0, Space.World);

}

}

///

/// 限制相机左右视角的角度

///

/// 角度

private void LimitAngle(float angle)

{

vect = this.transform.eulerAngles;

//当前相机x轴旋转的角度(0~360)

xcream = IsPosNum(vect.x);

if (xcream > angle)

this.transform.rotation = Quaternion.Euler(angle,vect.y,0);

else if (xcream < -angle)

this.transform.rotation = Quaternion.Euler(-angle, vect.y, 0);

}

///

/// 限制相机上下视角的角度

///

///

private void LimitAngleUandD(float angle)

{

vect = this.transform.eulerAngles;

//当前相机y轴旋转的角度(0~360)

ycream = IsPosNum(vect.y);

if (ycream > angle)

this.transform.rotation = Quaternion.Euler(vect.x, angle, 0);

else if (ycream < -angle)

this.transform.rotation = Quaternion.Euler(vect.x, -angle, 0);

}

///

/// 将角度转换为-180~180的角度

///

///

///

private float IsPosNum(float x)

{

x -= 180;

if (x < 0)

return x + 180;

else return x - 180;

}

}

对IsPosNum方法进行说明

之所以要将获取的欧拉角转换为-180°-180°之间,是因为在获取eulerAngle中,x轴和y轴的值只有0-360,而没有负数,那么这将会复杂化我们角度的判断,如限制左右角度为-60-60之间,那么我们就要判断角度是否超过300度或是超过60度, 显然超过300度的角度必定超过60度,那么就需要另外加条件进行判断;因此对获取的值进行转化更为方便!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

unity 角度限制_Unity3D实现摄像机镜头移动并限制角度相关推荐

  1. Unity 3D第三人称视角、用途广泛限定角度(视角不能360度翻转)

    Unity第三人称相机视角控制 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心 ...

  2. Unity使用LineRenderer组件画出菱形,长度,角度可任意调节

    首先说下我的思路: 开始想的比较简单,就是先建两个空物体分别挂上脚本,一个在X轴画直线,一个与X轴成angle夹角,通过计算得出坐标,这样就能画出一个菱形的角度,下面是实例图: 最后再写个脚本通过循环 ...

  3. unity 可滚动文本_Unity3d如何实现滚动文本框?

    展开全部 Unity3D是由Unity Technologies开发的一个让玩家轻松创62616964757a686964616fe58685e5aeb931333365653330建诸如三维视频游戏 ...

  4. 代码 控制unity 暂停 编辑器_Unity3D 报错解决方案及常用功能收集

    1.在Dictionary迭代器进行修改: var _key = index2factionDic.Keys.GetEnumerator(); stringitem; while(_key.MoveN ...

  5. tolua unity 报错_Unity3D热更新之LuaFramework篇[01]--从零开始

    解压刚刚下载好的压缩包,发现里面是一个Unity工程(如图2-1),于是用 unity打开此工程. 图2-1 我使用的Unity版本为5.5.5f1,会提示需要升级,是否备份,点"Go He ...

  6. unity 平移图片_Unity3D研究院之脚本实现模型的平移与旋转(六)

    123 说: 雨松大大,有个问题想请教一下,我用UNET构建了个小场景,在电脑上可以客户端可以连接到服务器,Windows和Linux都可以,发布到安卓缺连不了,这是问什么呢 说: 求教一下,刚刚接触 ...

  7. unity 解决乱码_unity3d 中文乱码解决方法——cs代码文件格式批量转化UTF8

    在Unity3d中经常会碰到中文乱码的问题,比如代码中的[AddComponentMenu("GameDef/AI/战机AI")],注释,中文文本等等 其原因在于,unity本身是 ...

  8. unity三维云图_unity3d 温度云图shader

    项目中用到关于温度云图效果,但是本人对shader还没入门,在网上找的一个牛人的shader .起初直接copy下来shader 编译报错,经过排错我把它修改编译通过了(编译版本unity 4.3), ...

  9. unity 编辑器存档_unity3d editor sprite 分割后的结果保存

    之前有人留言说想我介绍一下sprite packer的用法.那么我也顺便的介绍一下unity3d editor sprite 分割后的结果保存吧. 我们用来做sprite 的图片,通常会留有很多空白的 ...

  10. unity 解决乱码_Unity3D脚本中文字符乱码的解决方案

    用Unity这么久,一直就听别人说遇到在脚本里面用中文字符会乱码的问题.这些问题在Visual Studio比较少,通常都是在MonoDevelop上会出现,甚至在Monodevelop编辑器,写了中 ...

最新文章

  1. Memcached深度分析【转载】
  2. centos7安装golang
  3. java web的动静分离_Apache结合Tomcat实现动静分离的方法
  4. JavaScript中的嵌套事件处理(在鼠标移动事件上)
  5. 软件测试方法之白盒测试与黑盒测试
  6. vimium插件_chrome插件神奇的vimium人性化设置
  7. 第一批“绿牌”汽车终于要换电池了,看到价格后,你还要买吗?
  8. 蓝桥杯 2018年蓝桥杯C语言大学C组 C/C++
  9. 字符串在JVM中如何存放 及常量池技术
  10. 一、annotation
  11. python怎么重新运行,如何让python程序重新运行其
  12. win8更改计算机锁屏时间,在win8系统中设置自动锁屏功能的方法
  13. initializing of server in progress as process 4656
  14. Java中IO的快速复习(代码+注释)
  15. 论文笔记22:QRNN3D: 3D Quasi-Recurrent Neural Network for Hyperspectral Image Denoising
  16. android studio迁移,AndroidStudio 一键迁移至 AndroidX
  17. 少儿学编程系列---如何使用turtle画鸡蛋
  18. svg文件解析(python)
  19. Python3一篇学会“图像处理”的基本操作
  20. 典型的多层神经网络模型,多层变量神经网络分析

热门文章

  1. 手写Promise 封装Promise resolve reject then catch Promise.resolve Promise.reject
  2. 创龙28377d历程_双核dsp28377d
  3. Linux中scp报 not a regular file错误解决方案
  4. 关于echarts中饼图设置颜色的方法
  5. UE5实现HTC Vive VR功能
  6. SSL证书以及其验证过程
  7. 【RNNoise】用深度学习抑制噪声
  8. ctl文件去空格,word文档段落如何空格去掉 word文档段落前空格
  9. Tensorflow之softmax应用实例
  10. 空时编码的理论与实践(3)空时编码设计准则