当前位置: 首页 > news >正文

Unity 相机旋转及角度限制

前言

由于欧拉角具有直观的可读性,做相机旋转时选择修改eulerAngles 来实现旋转,但实际效果与预期稍有不同,这是因为欧拉角受到万向锁(Gimbal Lock)的影响,在赋值时需要对输入的角度进行调整。

if (value < 180)
{value = Mathf.Clamp(value, -180, -min);
}
else
{value = Mathf.Clamp(value, 360 - max, 360);
}

实现

private void Rotate()
{xInput = Input.GetAxis("Mouse X");yInput = Input.GetAxis("Mouse Y");float xAngle = transCam.eulerAngles.x - yInput * speedRotate;float yAngle = transCam.eulerAngles.y + xInput * speedRotate;xAngle = Clamp(xAngle, minAngleX, maxAngleX);yAngle = Clamp(yAngle, minAngleY, maxAngleY);transCam.eulerAngles = new Vector3(xAngle, yAngle, 0);float Clamp(float value, float min, float max){if (min > max){float temp = min;min = max;max = temp;}if (value < 180){value = Mathf.Clamp(value, -180, -min);}else{value = Mathf.Clamp(value, 360 - max, 360);}return value;}
}
http://www.lryc.cn/news/498337.html

相关文章:

  • error=‘null‘], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
  • Golang 字符串字面量表示方法
  • 03_Webpack模块打包工具
  • 【目标跟踪】AntiUAV600数据集详细介绍
  • 十、JavaScript的应用的习题
  • 【Spring】AOP
  • 三维地图,智慧城市,商业智能BI,数据可视化大屏(Cesiumjs/UE)
  • 鸿蒙Next通过oss上传照片到阿里云
  • 小白爬虫——selenium入门超详细教程
  • nlp培训重点
  • 什么是多模态和模态
  • apache中的Worker 和 Prefork 之间的区别是什么?
  • 系统监控——分布式链路追踪系统
  • 【Python]深入Python日志管理:从logging到分布式日志追踪的完整指南
  • DHCP Client的工作方式
  • docker-常用应用部署dockerfile模板
  • Unity3D学习FPS游戏(13)玩家血量控制
  • TDesign:Switch开关
  • AI在SEO中的应用与关键词优化探讨
  • [docker中首次配置git环境与时间同步问题]
  • 使用lumerical脚本语言创建绘制波导并进行数据分析(纯代码实现)(1)
  • redis.conf
  • 泷羽sec学习打卡-shell命令8
  • 割草机器人架构设计和技术应用
  • 基于SSM闪光点映像摄影工作室预约系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
  • Windows 和 Linux 系统命令行操作详解:从文件管理到进程监控
  • 【Calibre-Web】Calibre-Web服务器安装详细步骤(个人搭建自用的电子书网站,docker-compose安装)
  • 服务器数据恢复—服务器raid0阵列硬盘指示灯显示黄颜色的数据恢复案例
  • .nii.gz文件读取方式
  • Kube-Prometheus-Stack安装时初始化导入自定义Grafana dashboards