Unity:鼠标【上下左右滑动时】控制相机【左右张望】和【上下抬头】

news2024/11/7 18:14:11

相机旋转,看着是小事,但是却关系到用户的直观体验。旋转对了母慈子孝,旋转错了则翻江倒海。

一、功能

鼠标左右移动时,控制相机左右转动
鼠标上下移动时,控制相机抬头低头

二、被GPT带翻的过程

你可以在GPT里提问,他的回答也很给力,能转,但是都不符合人体的看东西的特点。

后来还是的自己写…
本案的相机旋转的关键要点有两个:

  • 1、鼠标左右滑动的时候,相机要围绕这 世界的Y轴 旋转,旋转的中心在相机的原点。
//左右旋转:绕自己的原点旋转,旋转轴为世界的Y轴
this.transform.RotateAround(this.transform.position, axisX,mouseX);//  public Vector3 axisY = new Vector3(1,0,0);

类比:
我虽然是低着头(相机往下看),但是当我东张西望的时候,往东和往西是围绕我站立的Y轴,也就是世界的Y轴,来旋转转的。其他任何旋转方法,都会导致奇怪的效果,不符合人的观察特点。

下图的坐标轴为世界坐标轴。

图中坐标轴为世界坐标轴

- 2、鼠标上下滑动的时候,相机实现抬头和低头的动作,此时相机是绕自己的x轴进行旋转。
类比:把自己的头想象成一个摄像机,抬头和低头时,我们绕的轴是穿过太阳穴的一条线。
//抬头低头:绕自己的轴旋转
transform.Rotate(axisY,mouseY, Space.Self);// public Vector3 axisY = new Vector3(1,0,0);

请添加图片描述

三、代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 鼠标左右移动时,控制相机左右转动
/// 鼠标上下移动时,控制相机抬头低头
/// 该脚本挂载到相机Camera上
/// Todo:加入平滑插值或者动画效果
/// </summary>
public class CameraController2 : MonoBehaviour
{
    /// <summary>
    /// 鼠标灵敏度
    /// </summary>
    [Header("鼠标灵敏度")]
    public float sensitivity = 100f; // 鼠标灵敏度

    /// <summary>
    /// 相机抬头低头的旋转轴
    /// </summary>
    [Header("相机抬头低头的旋转轴")]
    public Vector3 axisY = new Vector3(1,0,0);
    
    /// <summary>
    /// 鼠标X位移映射的旋转轴
    /// </summary>
    [Header("鼠标X位移映射的旋转轴")]
    public Vector3 axisX = new Vector3(0, 1, 0);
    
    [Header("0-左键,1-右键,2-中建")]
    [SerializeField]
    public int buttonIndex = 1;   
    
    void Update()
    {
        //鼠标按下
        if (Input.GetMouseButton(buttonIndex))
        {
            // 获取鼠标的位置变化delta值
            float mouseX = Input.GetAxis("Mouse X") * sensitivity * Time.deltaTime;
            float mouseY = Input.GetAxis("Mouse Y") * sensitivity * Time.deltaTime;

            //左右旋转:绕自己的点旋转,旋转轴为世界的Y轴
            this.transform.RotateAround(this.transform.position, axisX,mouseX);

            //抬头低头:绕自己的轴旋转
            transform.Rotate(axisY,mouseY, Space.Self);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/624706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【FPGA零基础学习之旅#7】BCD计数器设计

&#x1f389;欢迎来到FPGA专栏~BCD计数器设计 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能指正…

Virtual Serial Port Driver Pro 11 Crack

Virtual Serial Port Driver 虚拟串行端口驱动程序允许创建大量的虚拟COM端口&#xff0c;并为您提供充分模拟串行端口行为的巨大可能性。虚拟串行端口软件不仅仅是一个简单的COM端口模拟器。它提供了灵活的端口创建、管理和删除&#xff0c;允许测试串行软件&#xff0c;支持控…

Megatron + zero

文章目录 简介3D并行前置知识点&#xff1a;通信算子1. DP 数据并行显存效率优化&#xff08;ZeRO &#xff09;计算效率优化&#xff08;梯度累计减少通信&#xff09; 2. TP tensor并行&#xff08;算子内&#xff09;前置知识点&#xff1a;矩阵分块并行计算MLPself-attenti…

绿色荧光试剂210236-90-1,FITC Tyramide,Fluorescein-Tyramide

●中文名&#xff1a;荧光素酪胺 ●英文名&#xff1a;FITC Tyramide&#xff0c;Fluorescein-Tyramide&#xff0c;FITC TSA &#xff08;文章编辑资料汇总来源于&#xff1a;陕西新研博美生物科技有限公司小编MISSwu&#xff09;​ ●外观以及性质&#xff1a; 荧光素酪胺…

Vue核心

目录 一、初始Vue二、模板语法三、数据绑定四、el和data的两种写法五、MVVM模型六、数据代理七、事件处理八、计算属性九、监视属性十、绑定样式十一、条件渲染十二、列表渲染十三、收集表单数据十四、过滤器十五、内置指令十六、自定义指令十七、生命周期 简介&#xff1a; Vu…

【大数据之路2】分布式文件系统 HDFS

2. 分布式文件系统 HDFS 1. 引入HDFS【面试点】2. HDFS 概述1. HDFS 设计思路2. HDFS 架构3. HDFS 优缺点 3. HDFS 操作HDFS 读写基准测试 1. HDFS Shell 操作【重点】2. HDFS API 操作1. 访问数据1. 获取 FileSystem2. 文件的遍历3. 创建文件夹4. 文件的上传5. 文件的下载 2. …

实验篇(7.2) 07. 通过安全隧道访问指定网站 (FortiClient-SSL) ❀ 远程访问

【简介】通过前面的实验&#xff0c;我们已经了解了SSL VPN的隧道模式。FortiClient客户端拨号后&#xff0c;访问服务器IP的流量&#xff0c;会通过安全隧道到达远端防火墙&#xff0c;并访问DMZ接口下的服务器。那如果我想让更多的访问走安全隧道&#xff0c;但是又不确定是哪…

win11 安装tesseract-ocr

1. OCR OCR&#xff0c;即Optical Character Recognition&#xff0c;光学字符识别&#xff0c;是指通过扫描字符&#xff0c;然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说&#xff0c;它们都是一些不规则的字符&#xff0c;这些字符确实是由字符稍加扭曲变换…

【P52 】JMeter 汇总图(Aggregate Graph)

文章目录 一、汇总图&#xff08;Aggregate Graph&#xff09;参数说明二、准备工作三、测试计划设计 一、汇总图&#xff08;Aggregate Graph&#xff09;参数说明 可以以图形的方式查看事务或者取样器的汇总报告 使用场景&#xff1a;用于评估测试结果 使用频率&#xff1…

Linux——安装Xshell7并使用vim操作文件(vim常用操作+快捷键+踩坑总结)

一、安装Xshell7完成远程登录 由于在安装Xshell6的时候很容易会出现&#xff0c;要求更新&#xff0c;但同时又显示已经是最新的版本的问题。当然出现这个问题的解决方法有很多&#xff0c;但最简单的方法就是直接使用Xshell7版本。实际测试后发现可以正常使用。&#xff08;关…

6个令大喵惊喜的 Python 库

6个令大喵惊喜的 Python 库 在过去的两年里&#xff0c;我一直在广泛使用Python。因此&#xff0c;我一直在寻找令人惊叹的库&#xff0c;可以增强我在数据工程和商业智能项目中的工作。 1.Pendulum Python 中有许多库可用于日期时间&#xff0c;但我发现 Pendulum 在日期的任何…

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 链式提示

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 链式提示 在本视频中,我们将学习如何通过将多个提示链接在一起,将复杂的任务拆分为一系列更简单的子任务。你可能会想,为什么要将一个任务拆分为多个提示,而你可以像我们在上一个视频中学到的那样…

高级IO -- 多路转接之 select

高级IO – 多路转接之 select 文章目录 高级IO -- 多路转接之 select初识selectselect 函数原型关于fd_set结构 select使用示例编写Sock编写selectService测试 理解select执行过程socket就绪条件读就绪写就绪 select的特点select的缺点select的缺点 初识select 系统提供select…

2023同为测试你的薪资为何比别人低?

软件测试这个行业我见过工作5年依然是初级水平的功能测试&#xff0c;拿着不到1W的薪资&#xff0c;也见过1年时间达到高级自动化水平的大牛&#xff01;拿着20K的薪资。 影响你薪资的有两点&#xff01; 一、你的技术水平高低直接决定你薪资的多少&#xff0c;工作时间长短并…

3D引擎和渲染

常见的三维引擎 三维引擎按平台可分为客户端三维引擎&#xff0c;Web端三维引擎&#xff1b;按用途可分为游戏三维引擎、CAD/CAM/CAE三维引擎&#xff1b; 游戏引擎常见的有UE4、Unity3D&#xff1b;CAD工程用的三维引擎又分商用的还有开源的&#xff0c;商用的比较著名的有A…

华为OD-2023B卷-太阳能板最大面积(java)

2.华为OD-2023B卷 -太阳能板最大面积(回到目录) 太阳能板最大面积 知识点分治 时间限制:1s 空间限制:32MB 限定语言:不限 难度:★★ 中规中矩的双指针题目。暴力for循环过不了全部样例。 题目描述: 给航天器一侧加装长方形或正方形的太阳能板(图中的红色斜线区域),需…

uniapp请求封装入门级实战记录

简单记录一下uniapp请求进行封装的相关内容,方便以后查看! 1.目录结构 2.封装文件 2.1 全局公共方法封装 2.2 请求方法封装 2.3 项目请求路径封装 2.4 常用变量封装 2.5 页面使用 1.目录结构 项目根目录下创建common文件夹,包含内容: …

springBoot源码分析如何加载配置文件

前言&#xff1a;springBoot的版本是 2.2.4.RELEASE 一、入口 /*** Run the Spring application, creating and refreshing a new* {link ApplicationContext}.* param args the application arguments (usually passed from a Java main method)* return a running {link A…

DM5加密

MD5加密 概述 MD5&#xff08;Message Digest Algorithm 5&#xff09;是一种常用的哈希函数&#xff0c;能够将任意长度的消息压缩成一个128位的哈希值。它由Ronald Rivest在1991年设计&#xff0c;其设计目标是用来取代较早的MD4算法。 MD5算法通过多次处理分组数据来生成…

2023年5月青少年机器人技术等级考试理论综合试卷(三级)

青少年机器人技术等级考试理论综合试卷&#xff08;三级&#xff09;2023.06 分数&#xff1a; 100 题数&#xff1a; 30 一、 单选题(共 20 题&#xff0c; 共 80 分) 1.如图所示电路&#xff0c; 下列说法正确的是&#xff1f; &#xff08; &#xff09; A.电路中电阻 R3 和…