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

Unity学习90天-第2天-认识键盘 / 鼠标输入(PC)并实现WASD 移动,鼠标控制物体转向

Hey欢迎回来今天我们来搞定 Unity 的输入系统重点讲 PC 端的键盘和鼠标。 学完这个你就能做出WASD 移动 鼠标控制转向的基础移动系统输入系统Unity 有两套输入系统新旧不兼容旧输入Input Manager新输入Input System写法Input.GetKey()Input.GetAxis()Gamepad.currentKeyboard.current需要安装不用自带需要安装 Package适用场景初学、简单项目手柄、触摸屏、多人本地初学阶段我们用旧输入系统够用且简单。键盘基础 — GetKey 系列三个方法三种状态Input.GetKey(KeyCode.W) // 按住 W 的每一帧 → true Input.GetKeyDown(KeyCode.W) // 按下 W 的那一帧 → true其他帧 false Input.GetKeyUp(KeyCode.W) // 松开 W 的那一帧 → true什么时候该用哪个方法适用场景举例GetKey需要持续检测的逻辑持续移动、持续旋转GetKeyDown瞬间触发的逻辑跳跃、攻击、开门GetKeyUp松开时触发的逻辑停止冲刺、松手取消瞄准脚本实现按住W前进S后退void Update() { if (Input.GetKey(KeyCode.W)) { transform.Translate(Vector3.forward * 5f * Time.deltaTime); } if (Input.GetKey(KeyCode.S)) { transform.Translate(Vector3.back * 5f * Time.deltaTime); } }鼠标基础 — GetMouseButton 系列鼠标按键检测Input.GetMouseButton(0) // 按住鼠标左键 Input.GetMouseButton(1) // 按住鼠标右键 Input.GetMouseButton(2) // 按住鼠标中键滚轮 Input.GetMouseButtonDown(0) // 按下左键那一帧 Input.GetMouseButtonUp(1) // 松开右键那一帧鼠标位置Input.mousePosition // 鼠标在屏幕上的像素坐标 // 左下角 (0, 0) // 右上角 (屏幕宽度, 屏幕高度)鼠标位移最有用Input.GetAxis(Mouse X) // 鼠标横向移动返回 -1 ~ 1 Input.GetAxis(Mouse Y) // 鼠标纵向移动返回 -1 ~ 1注意GetAxis的好处是返回平滑的插值不会出现跳变比直接用mousePosition方便很多。控制物体朝向 — 鼠标控制旋转这是今天最核心的知识点学会这个知识点我们就可以完成今天的实现WASD 移动鼠标控制物体转向的任务啦思路拆解鼠标左右移动 → 控制物体绕 Y 轴旋转左右看鼠标上下移动 → 控制视角绕 X 轴旋转上下看那么我们先来实现鼠标左右移动将我们的逻辑写在Update中每帧运行并且获取我们鼠标横向移动。void Update() { float mouseX Input.GetAxis(Mouse X); // 获取鼠标横向移动 }在将获取的横向移动数值乘上我们的灵敏度转化为Y轴的角度。void Update() { float mouseX Input.GetAxis(Mouse X); // 获取鼠标横向移动 // 乘以灵敏度转成 Y 轴旋转角度 float rotY mouseX * rotateSpeed * Time.deltaTime; }最后我们是绕世界 Y 轴旋转Space.World 固定以世界坐标为基准。void Update() { float mouseX Input.GetAxis(Mouse X); // 获取鼠标横向移动 // 乘以灵敏度转成 Y 轴旋转角度 float rotY mouseX * rotateSpeed * Time.deltaTime; // 绕世界 Y 轴旋转Space.World 固定以世界坐标为基准 transform.Rotate(Vector3.up, rotY, Space.World); }那么我们在用同样的方式来实现鼠标的上下移动不过要加一点小小的限制避免天翻地覆。void Update() { float mouseY Input.GetAxis(Mouse Y); // 获取鼠标纵向移动 // 注意上下看是控制视角的 Pitch 角度 // 需要自己累加不能直接 Rotate会万向锁 pitch - mouseY * rotateSpeed * Time.deltaTime; // 限制俯视角度防止头 360° 转圈 pitch Mathf.Clamp(pitch, -45f, 45f); // 应用旋转物体自身 Yaw相机子物体 Pitch transform.localRotation Quaternion.Euler(pitch, yaw, 0f); }那么我们的知识点就已经学完啦根据我们现在所学的我们就可以实现我们的任务啦最后脚本实现目标效果WASD 移动W 往当前朝向的前方走鼠标左右控制人物转向鼠标上下控制视角俯仰限制在 ±45°新建脚本 挂到 Player 物体上using UnityEngine; public class PlayerController : MonoBehaviour { [Header(移动参数)] public float moveSpeed 5f; // 移动速度米/秒 [Header(视角参数)] public float rotateSpeed 100f; // 旋转速度度/秒 public float minPitch -45f; // 最小俯角 public float maxPitch 45f; // 最大俯角 // 私有变量 private float pitch; // 上下看角度绕X轴 private float yaw; // 左右看角度绕Y轴 void Update() { //移动朝当前朝向的方向移动 float h Input.GetAxis(Horizontal); // A/D float v Input.GetAxis(Vertical); // W/S Vector3 dir new Vector3(h, 0, v); if (dir.magnitude 0.1f) // 有输入才移动 { // 把局部方向转成世界方向乘以朝向的旋转 Vector3 worldDir transform.TransformDirection(dir); transform.position worldDir * moveSpeed * Time.deltaTime; } //鼠标左右 → 控制人物整体绕 Y 轴旋转 float mouseX Input.GetAxis(Mouse X); yaw mouseX * rotateSpeed * Time.deltaTime; //鼠标上下 → 控制视角绕 X 轴俯仰限制角度 float mouseY Input.GetAxis(Mouse Y); pitch - mouseY * rotateSpeed * Time.deltaTime; pitch Mathf.Clamp(pitch, minPitch, maxPitch); // 限制角度 //应用旋转Yaw 给人物Pitch 给相机作为子物体 // 人物自身只转 Yaw左右看 transform.rotation Quaternion.Euler(0f, yaw, 0f); // 相机作为子物体应用 Pitch上下看 // 找 Main Camera如果没有就用当前物体的第一个子物体 Transform cam Camera.main?.transform ?? transform.GetChild(0); if (cam ! null) { cam.localRotation Quaternion.Euler(pitch, 0f, 0f); } } }最后效果呈现今天的教学就到这里接下来我将连续更新90天的Untiy教程从基础到一个网络部分有兴趣的朋友们可以收藏关注谢谢如果有疑问评论区见。

相关文章:

Unity学习90天-第2天-认识键盘 / 鼠标输入(PC)并实现WASD 移动,鼠标控制物体转向

Hey!欢迎回来! 今天我们来搞定 Unity 的输入系统,重点讲 PC 端的键盘和鼠标。 学完这个,你就能做出 WASD 移动 鼠标控制转向的基础移动系统!输入系统Unity 有两套输入系统,新旧不兼容:旧输入&a…...

告别计算器!手把手教你用Xilinx CORDIC IP核在FPGA上实现小数开方(附完整Verilog代码)

告别计算器!手把手教你用Xilinx CORDIC IP核在FPGA上实现小数开方(附完整Verilog代码) 在数字信号处理、图像算法或控制系统设计中,平方根运算几乎无处不在。传统解决方案要么依赖软件计算(实时性差)&…...

3D Face HRN人脸重建模型应用:为AR滤镜快速生成精准面部网格

3D Face HRN人脸重建模型应用:为AR滤镜快速生成精准面部网格 1. 从2D到3D的魔法:人脸重建技术革新 想象一下这样的场景:你正在开发一款AR美颜滤镜,需要让虚拟特效精准贴合用户面部。传统方案依赖复杂的面部关键点检测&#xff0…...

如何永久保存微信聊天记录?WeChatMsg完整指南让记忆永不丢失

如何永久保存微信聊天记录?WeChatMsg完整指南让记忆永不丢失 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…...

WarcraftHelper:魔兽争霸3终极兼容性工具,让经典游戏重获新生

WarcraftHelper:魔兽争霸3终极兼容性工具,让经典游戏重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为魔兽…...

GLM-4.1V-9B-Base惊艳效果:古诗词配图理解、AI绘画作品风格反推分析

GLM-4.1V-9B-Base惊艳效果:古诗词配图理解、AI绘画作品风格反推分析 1. 视觉多模态理解新标杆 GLM-4.1V-9B-Base是智谱最新开源的视觉多模态理解模型,在中文视觉理解领域展现出令人惊艳的能力。不同于常见的纯文本大模型,这款模型专精于图像…...

如何高效使用AutoDock Vina:3个实战技巧与完整工作流程指南

如何高效使用AutoDock Vina:3个实战技巧与完整工作流程指南 【免费下载链接】AutoDock-Vina AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina AutoDock Vina是一款高效的开源分子对接软件,广泛应用于药物发现、蛋白质配…...

前端性能监控指南

前端性能监控指南:提升用户体验的关键 在当今快节奏的互联网时代,用户对网页加载速度和交互流畅度的要求越来越高。前端性能监控成为开发者优化用户体验、提升业务转化率的重要手段。本文将介绍前端性能监控的核心内容,帮助开发者从多个维度…...

WeChatExporter:解锁iOS微信聊天记录的自由备份终极指南

WeChatExporter:解锁iOS微信聊天记录的自由备份终极指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因误删重要微信聊天记录而懊恼?是…...

ofa_image-caption企业应用:制造业设备巡检图→故障部位+状态英文描述自动生成

ofa_image-caption企业应用:制造业设备巡检图→故障部位状态英文描述自动生成 1. 项目背景与价值 在制造业设备巡检中,每天都会产生大量的设备图像数据。传统的人工巡检图片分析需要经验丰富的工程师逐一查看,不仅效率低下,还容…...

从单点通信到批量处理:s7netplus如何优化西门子PLC数据传输性能

从单点通信到批量处理:s7netplus如何优化西门子PLC数据传输性能 【免费下载链接】s7netplus S7.NET -- A .NET library to connect to Siemens Step7 devices 项目地址: https://gitcode.com/gh_mirrors/s7/s7netplus 在工业自动化系统中,PLC&…...

AI失忆症有了新解法,哈佛团队开发海马体仿生技术,要用AI终结人类“遗忘史”

来源:DeepTech深科技排版:胡莉花遗忘是人类共有的经历,无论是对话、事件还是转瞬即逝的瞬间,我们终究会遗忘。但如果遗忘变成一个可选的选项,如果人类能够拥有完美且无限的记忆,世界会变成怎样?…...

基于Python的社区团购管理系统毕业设计

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一套基于Python的社区团购管理系统,以解决当前社区团购业务中存在的效率低下、信息不对称、用户体验不佳等问题。具体研究目的如…...

Unity数字孪生项目上手第一步:别急着写代码,先搞定这5个核心组件(附快捷键秘籍)

Unity数字孪生项目上手第一步:别急着写代码,先搞定这5个核心组件(附快捷键秘籍) 刚接触Unity数字孪生开发的新手常犯一个错误——一上来就埋头写脚本。但真正高效的工作流,往往始于对基础组件的系统性搭建。就像建造房…...

在国产ARM服务器上,手把手教你离线搞定RabbitMQ 3.8.8和Erlang 22.1(含依赖包下载指南)

国产ARM服务器离线部署RabbitMQ 3.8.8全栈指南:从依赖包下载到集群配置 在信创产业快速推进的背景下,越来越多的企业开始将核心业务系统迁移到国产ARM架构服务器。当我在某金融客户的鲲鹏920服务器集群上首次实施RabbitMQ离线部署时,深刻体会…...

LiuJuan20260223Zimage代码生成实战:对比Claude Code与本地部署优势

LiuJuan20260223Zimage代码生成实战:对比Claude Code与本地部署优势 最近在尝试各种代码生成工具,从云端服务到本地部署的模型,都试了个遍。我发现很多开发者朋友在选择时都会纠结:是直接用Claude Code这样的云端服务方便&#x…...

基于Python的流浪猫狗救助救援网站毕业设计源码

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在开发一个基于Python的流浪猫狗救助救援网站,以实现流浪动物救助工作的信息化、智能化和高效化。具体研究目的如下:提高流浪动物…...

Kimi-VL-A3B-Thinking入门必看:2.8B激活参数MoE多模态模型部署详解

Kimi-VL-A3B-Thinking入门必看:2.8B激活参数MoE多模态模型部署详解 1. 模型简介 Kimi-VL-A3B-Thinking是一款高效的开源混合专家(MoE)视觉语言模型,在多模态推理领域表现出色。这个模型最吸引人的特点是它仅激活2.8B参数就能实现…...

ComfyUI Manager终极指南:AI绘画插件管理的完整解决方案

ComfyUI Manager终极指南:AI绘画插件管理的完整解决方案 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various cus…...

解锁NVIDIA隐藏潜能:用Profile Inspector打造专属游戏体验

解锁NVIDIA隐藏潜能:用Profile Inspector打造专属游戏体验 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 还在为游戏画面卡顿、撕裂而烦恼吗?是否觉得官方驱动控制面板的功能太…...

阿里万物识别镜像:中文图片识别快速部署与使用

阿里万物识别镜像:中文图片识别快速部署与使用 你有没有想过,如果电脑能像人一样“看懂”图片,会是什么样子?不是简单地识别“猫”或“狗”,而是能准确说出“这是一台华为MateBook笔记本电脑”、“那是一杯加了冰块的…...

告别接线混乱!用Fritzing可视化你的树莓派SSD1306 OLED连接图(SPI/I2C双模)

告别接线混乱!用Fritzing可视化你的树莓派SSD1306 OLED连接图(SPI/I2C双模) 当你第一次拿到SSD1306 OLED模块和树莓派时,面对密密麻麻的引脚和杜邦线,是否感到无从下手?文字教程虽然详细,但缺乏…...

s2-pro语音合成实操手册:上传参考音频复用音色的完整流程解析

s2-pro语音合成实操手册:上传参考音频复用音色的完整流程解析 1. 平台简介与核心功能 s2-pro是Fish Audio开源的专业级语音合成模型镜像,它提供了两大核心能力: 基础文本转语音:将输入的文本内容转换为自然流畅的语音音色克隆功…...

FlowState Lab赋能内容创作:自动生成小说情节发展曲线与角色情绪波动

FlowState Lab赋能内容创作:自动生成小说情节发展曲线与角色情绪波动 1. 引言:当AI遇见创意写作 你有没有遇到过这样的创作困境?写到第三章就卡壳,角色情绪转折生硬,故事节奏忽快忽慢。传统写作软件只能帮你检查语法…...

HUNYUAN-MT LaTeX科研文档翻译实践:完美保留公式与图表引用

HUNYUAN-MT LaTeX科研文档翻译实践:完美保留公式与图表引用 写论文、投期刊,对很多科研工作者来说,翻译是个绕不过去的坎。尤其是用LaTeX写的文档,里面塞满了复杂的公式、交叉引用和宏命令,直接扔给翻译工具&#xff…...

2026.4.12:编译openssl支持libcurl的https访问

编译openssl支持libcurl的https访问 环境:Ubuntu-26.04 需要的依赖:openssl 安装openssl https://github.com/openssl/openssl/releases wget https://github.com/openssl/openssl/releases/download/openssl-3.6.2/openssl-3.6.2.tar.gz tar -zxvf openssl-3.6.2.tar.gz./…...

效果惊艳!Anything to RealCharacters实战:多组2.5D/卡通图转真人效果对比展示

效果惊艳!Anything to RealCharacters实战:多组2.5D/卡通图转真人效果对比展示 1. 引言:当2.5D遇见写实魔法 想象一下,你精心绘制的2.5D角色突然拥有了真实的皮肤质感、自然的发丝细节和生动的表情——这就是Anything to RealCh…...

Java Swing文件分类系统开发全记录

个人文件分类管理系统设计与开发实录从零开始打造一个Java Swing桌面应用的全过程记录前言 作为一名Java学习者,在完成基础知识的学习后,我一直想动手做一个完整的小项目来巩固所学。刚好借Java课程设计要求完成一个项目的契机,经过反复思考&…...

智能窗口管理解决方案:如何用PowerToys FancyZones实现3倍多任务处理效率

智能窗口管理解决方案:如何用PowerToys FancyZones实现3倍多任务处理效率 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_Tre…...

QZoneExport:一键永久保存你的QQ空间数字记忆

QZoneExport:一键永久保存你的QQ空间数字记忆 【免费下载链接】QZoneExport QQ空间导出助手,用于备份QQ空间的说说、日志、私密日记、相册、视频、留言板、QQ好友、收藏夹、分享、最近访客为文件,便于迁移与保存 项目地址: https://gitcode…...