Unity脚本类 ---- Input类,虚拟轴与插值方法

 

 

1.注意第一个GetMouseButton()方法只要检测到鼠标处于按下状态,那么该方法就会一直返回 true,鼠标没按下时调用该方法返回的是 false

2.而第二个方法 --- GetMouseButtonDown() 方法只会在你按下鼠标的第一帧返回一个 true,然后就一直返回false,GetMouseButtonUp()则是在你送开鼠标的那一帧返回 true,然后一直返回false

 

1.在KeyCode中ctrl这种左右堆成布局的按键对应的属性有两个,分别是 LeftCtrl 和 RightCtrl

2.有没有down / up ,取决于你想在按下对应按键后方法只执行一次还是执行多次。

(执行一次的话就有down/up,反之则没有)

 

1. 按照操作点开虚拟按钮面板之后,就能够看到18个Unity自带的虚拟按钮,如果我们将虚拟按钮个数(size)改为大于18的个数的话(如19个),则Unity会自动创建新的虚拟按钮来补齐数目

1.一个虚拟按钮分为正负两极,且一个虚拟按钮能够绑定四个真实按键,其中四个真实按键分为了两类:正向(positive)按钮和负向(negative)按钮

按了正向按钮绑定的真实按键后就会返回一个正值,负向按钮则是返回一个负值

 1.这两个输入框是用来描述正向按钮和负向按钮的功能的 --- 没有negative的是用来描述正向按钮的,有nagetive就是描述负向按钮

1.Gravity --- 复位速度

2.Sensitivity --- 灵敏度 

虚拟按钮有三个值 --- 1  - 0  - -1 ,当我们没有按到虚拟按钮对应的任何真实按钮时,虚拟按钮对应的值是0,按了正向按钮就会变到1,按负向就是变到-1,松开按键则值都会回到0

要注意的是这个变化不是跳跃式变化的,而是逐渐由0变1或者是由0变负1,而这个由0变化到其它值的速度就是由Sensitivity(灵敏度)决定的

而从1/-1变回0的速度则是由Gravity(复位速度)决定的

虚拟按钮除了可以绑定传统的键盘和鼠标按键之外,还可以绑定Mouse Movement(鼠标移动)

绑定鼠标移动的时候具体设置如上图:

1.

比较关键的是决定鼠标移动所绑定的移动轴,在上面这个设置中为x轴

2.绑定X移动轴之后,鼠标向右移动则虚拟按键值偏向1,向左移动偏向-1,保持不动则为0 

(MouseY则是对应鼠标的Y轴运动 --- 上为正,下为负)

这一个虚拟轴对应的是鼠标滚轮 --- (Joysticks --- 操作杆,Scrollwheel --- 鼠标滚轮) 

1.虚拟轴在绑定像 ctrl , shift 这种具有左右对称排布特点的按键时,必须写明绑定的是 left 还是 right(绑定时不能用大写格式,只能用小写格式) 

2.绑定按键时,空格对应的是 space

前面三个方法能够起到的作用如下:

1.任何与给定虚拟轴绑定的真实按键处于按下状态的话,则该方法会一直返回 true

2.任何与给定虚拟轴绑定的真实按键被按下的那一帧,该方法会返回一次true

3.任何与给定虚拟轴绑定的真实按键被抬起的那一帧,该方法会返回一次true

后面两个方法则是

1.没按下与虚拟轴绑定的真实按键时调用该方法后会返回0,按下绑定的正向按键时会返回一个从0到1不断变化的单精度浮点数,按下绑定的负向按键则是从0到-1的一个单精度浮点数

2.没按下返回0,按了正向按键返回1,按了负向按键返回-1

3.有了虚拟轴之后,作为程序员的我们以后就不用再去找固定的按键了,只需要找到虚拟轴即可

4.对于绑定鼠标移动轴的虚拟轴 “Mouse X” 和 “Mouse Y”来说,由于我们在移动鼠标的时候并没有按下按钮,所有上面三个GetButton方法获得这两个虚拟轴的任何反馈的,只有两个GetAxis方法可以获得反馈(右下正,左上负)

1.有Raw,没Raw的区别就是是否应用平滑过渡

1.写摄像头沿着鼠标移动的脚本的时候要注意一个问题 --- 我们的鼠标左右移动时,摄像头是沿着世界坐标系的y轴旋转的,如果我们直接写下面这种类型的代码的话:

则都是沿自身坐标系旋转,因此如果想沿世界坐标系旋转的话,必须再给方法加一个参数:

指明沿哪一个坐标系旋转(摄像头上下摆动是沿着自身坐标系旋转的,而不是沿着世界坐标系,否则的话会导致上下摆动并不是我们想要的效果) 


 插值法

1.插值法是类 ---- Mathf 中的一个方法 --- Lerp方法

 

1.Lerp方法需要三个参数,分别是数据变化的起点,终点以及数据返回比例,该方法的工作逻辑如下:

一.确定当前数据起点和数据终点所在的数据段

二.按照第三个参数 --- 数据返回比例,从起点开始像终点前进对应比例(该比例的取值范围是0到1,如果取0.1的话则表示从起点开始,向终点前进整个段的0.1倍)

三.前进到指定位置后,将指定位置的数值返回

比如 --- Lerp(20,60,0.1)

1.数据段 = 60 - 20 = 40 , 前进段 = 数据段 * 0.1 = 4

2.返回值 =  起点 +  前进段 = 20 + 4 = 24

知道了这个方法的执行逻辑后,我们就能够实现一个数值在一定数据段的由块到慢(或者反过来)的变化,具体的实现方式如下:

一.确定起点,终点,比例

二.令变化量等于起点,并调用Lerp方法,然后将调用后的返回值传给变化量,接着重复执行步骤2

按照上面这两步走,就能够得到一个以越来越慢的速度接近终点,且只能无限接近终点而到达不了终点的变化量

1.但是无限接近并不是我们希望出现的情况(不停的调用方法占用内存空间),因此我们可以对变化量进行一个判断 --- 即当变化量与终点的差值小于一定数的时候,直接令变化量等于终点值并结束调用方法,这样就能够使得无限接近结束掉。

2.使用上面这个方法还需要处理一个问题 --- 作差之后的值的正负问题 --- 可以通过调用 Mathf 中的 Abs方法来解决 --- Abs(参数) --- 调用后返回参数的绝对值

3.不要忘了浮点数在计算机中并不是精确存储的,而是采用近似存储的方式,因此对浮点数作判断的时候尽量不要使用 == 这种过于绝对的判断


1.在Unity脚本中创建一个具有 Public 权限的数组引用,并将脚本挂载到游戏物体上后,该游戏物体的Inspector界面处会出现如下参数输入窗口

这个Size指的是数组元素个数,填入后脚本会自动创建一个数组实例(该数组的元素个数与Size相同),并将具有Public 权限的数组引用指向该数组,同时Inspecor界面会出现如下变化:

即填入元素个数后,又会出现对应的元素赋值窗口,我们可以直接在窗口处对元素进行赋值。 这行代码能够实现当index从0开始不停的+1,加到等于zoomLevel.Length时又变回0的功能

(其原理就是取余的特性 ---- a%b , a < b 时 a%b = a ; a = b 时 a%b =0)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第四季新星计划即将开启,博客之星取消拉票你怎么看?

catalogue&#x1f31f; 写在前面&#x1f31f; 线下创机遇&#x1f31f; 新星计划&#x1f31f; 做导师可以得到什么&#x1f31f; 新星计划跟原力计划有何不同&#xff1f;&#x1f31f; 博客之星新玩法你怎么看&#xff1f;&#x1f31f; 写在前面 哈喽&#xff0c;大家好&…

音乐制作:Ableton Live 11 Suite Mac

Ableton Live 11 Suite Mac是一款非常专业的音乐制作软件&#xff0c;Live 是用于音乐创作和表演的快速、流畅和灵活的软件。它带有效果、乐器、声音和各种创意功能;制作任何类型的音乐所需的一切。以传统的线性排列方式进行创作&#xff0c;或者在 Live 的 Session 视图中不受…

全面比较Aptos和Sui:Aptos已上线 来看看Sui

一、简介 “L1战争”是2020-2021周期中广为人知的故事&#xff0c;主要的竞争性1层区块链与以太坊一起捕获了大量的价值和开发人员人才。Solana、Cosmos、Avalanche、BSC和近十几个其他L1在市场峰值市值一度超过3000亿美元。虽然这种叙事已经降温&#xff0c;但围绕网络规模的…

56 | fstab开机挂载

1 fstab的参数解析 【file system】【mount point】【type】【options】【dump】【pass】 其中&#xff1a; file systems&#xff1a;要挂载的分区或存储设备。 mount point&#xff1a;file systems 的挂载位置。 type&#xff1a;要挂载设备或是分区的文件系统类型&…

【刷题之路Ⅱ】牛客 NC107 寻找峰值

【刷题之路Ⅱ】牛客 NC107 寻找峰值一、题目描述二、解题1、方法1——直接遍历1.1、思路分析1.2、代码实现2、方法2——投机取巧的求最大值2.1、思路分析2.2、代码实现3、方法3——二分法3.1、思路分析3.2、代码实现一、题目描述 原题连接&#xff1a; NC107 寻找峰值 题目描…

01. Vue核心 Vue简介 初识

1.Vue简介 1. Vue核心 1.1 官网 英文官网中文官网 1.1.2 介绍与描述 Vue 是一套用来动态构建用户界面的渐进式JavaScript框架 ○ 构建用户界面&#xff1a;把数据通过某种办法变成用户界面 ○ 渐进式&#xff1a;Vue可以自底向上逐层的应用&#xff0c;简单应用只需要一个…

智能灯泡一Homekit智能家居系列

传统的灯泡是通过手动打开和关闭开关来工作。有时&#xff0c;它们可以通过声控、触控、红外等方式进行控制&#xff0c;或者带有调光开关&#xff0c;让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块&#xff0c;可与手机、家庭智能助手、或其他智能硬件进行通信&#…

Docker—苹果Mac安装Docker的两种方式

文章目录Docker简介方式一&#xff1a;官网dmg安装方式二&#xff1a;homebrew安装前置条件brew安装docker关注微信公众号&#xff1a;CodingTechWork&#xff0c;一起学习进步。Docker简介 &emsp docker就是集镜像、容器和仓库三个概念于一身的集装箱&#xff0c;应用于…

真要被00后职场整顿了?老员工纷纷表示真的干不过.......

最近聊到软件测试的行业内卷&#xff0c;越来越多的转行和大学生进入测试行业。想要获得更好的待遇和机会&#xff0c;不断提升自己的技能栈成了测试老人迫在眉睫的问题。 不论是面试哪个级别的测试工程师&#xff0c;面试官都会问一句“会编程吗&#xff1f;有没有自动化测试…

Java - 配置中心初体验

目录 前言 配置中心介绍 什么是配置中心 Nacos配置中心 数据结构 命名空间 分组 服务 配置中心添加配置 读取配置 本地添加依赖 本地添加配置 测试 结语 前言 前文讲了ELK&#xff0c;ELK说简单也简单&#xff0c;说复杂也复杂&#xff0c;但说实话&#xff0c;微…

难以置信,已经有人用 ChatGPT 做 Excel 报表了?

要问2023年初科技领域什么最火&#xff0c;那自然是 ChatGPT。 ChatGPT 由人工智能研究实验室 OpenAI 于2022年11月30日推出。上线短短5天&#xff0c;用户数量已突破100万&#xff0c;在今年2月份&#xff0c;用户数量已经突破1亿。 ChatGPT 是一个超级智能聊天机器人&#…

Centos7 XFS(dm-0):Internal error XFS_WANT_CORRUPTED_GOTO

在k8s的道路上我们都是小白&#xff0c;每天启动虚机都会遇到各种各样的问题&#xff0c;这不 部署的k8s虚机启动发现操作系统启动异常&#xff0c;提示如下报错信息 XFS&#xff08;dm-0&#xff09;:Internal error XFS_WANT_CORRUPTED_GOTO at line 1700 of file fs/xfs/l…

Prometheus 监控云Mysql和自建Mysql(多实例)

本文您将了解到 Prometheus如何配置才能监控云Mysql(包括阿里云、腾讯云、华为云)和自建Mysql。 Prometheus 提供了很多种Exporter,用于监控第三方系统指标,如果没有提供也可以根据Exporter规范自定义Exporter。 本文将通过MySQL server exporter 来监控Mysql指标,最新版的…

MFU(Mask Field Utilization)

先验知识&#xff1a;通常12寸晶圆为300mm直径圆形&#xff0c;Mask最大为26mm x 33mm矩形。 MFU就是光刻掩膜版有效利用比例。实际mask size die_area x N scribe_line_area, N是一张mask内die数量&#xff0c;受限于scanner(推测是曝光的机器)&#xff0c;mask尺寸最大可以…

Windows Server 2022 中文版、英文版下载 (updated Mar 2023)

Windows Server 2022 正式版&#xff0c;2023 年 3 月更新 请访问原文链接&#xff1a;https://sysin.org/blog/windows-server-2022/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 早期直观体验 版本 21H2&#xff0c;根据…

【数据结构】排序

作者&#xff1a;✿✿ xxxflower. ✿✿ 博客主页&#xff1a;xxxflower的博客 专栏&#xff1a;【数据结构】篇 语录&#xff1a;⭐每一个不曾起舞的日子&#xff0c;都是对生命的辜负。⭐ 文章目录1.排序1.1排序的概念1.2常见的排序算法2.常见排序算法2.1插入排序2.1.1直接插入…

0x03数学预备

线性代数 标量 实质上就是一个点或者说是一个零维的ndarary x torch.tensor(3.0) y torch.tensor(4.0)x y, x * y, x / y, x ** y, x > y向量 向量基本运算遵循广播机制&#xff0c;对应的点相加减&#xff0c;相乘除&#xff0c;长度是L2范数 在大量文献中&#xf…

Unity设计模式—服务定位器模式

服务定位器模式 概要 为某服务提供一个全局访问入口来避免使用者与该服务具体实现类耦合 游戏编程中&#xff0c;某些对象或者系统几乎出现在程序的每个角落。如音频&#xff0c;UI管理等。 直接引用对象肯定最差&#xff0c;用单例也不好&#xff0c;更合适的方案是引入服务定…

【Vue全家桶】带你全面了解通过Vue CLI初始化Vue项目

【Vue全家桶】带你全面了解通过Vue CLI初始化Vue项目 文章目录【Vue全家桶】带你全面了解通过Vue CLI初始化Vue项目写在前面一、Vue CLI脚手架1.1 认识Vue CLI1.2 Vue CLI 安装和使用二、Vue create 项目的过程2.1 创建项目2.2选择 Manually select features创建2.3 选择Vue的版…

【linux】进程信号——信号的产生

进程信号一、信号概念1.1 信号理解二、产生信号2.1 通过键盘产生信号2.2 捕捉信号自定义signal2.3 系统调用接口产生信号2.3.1 向任意进程发送任意信号kill2.3.2 给自己发送任意信号raise2.3.3 给自己发送指定信号abort2.3.4 理解2.4 硬件异常产生信号2.4.1 除0异常2.4.2 野指针…
最新文章