Unity 键盘控制人物移动——之输入方式代码的编写

2023-11-20

键盘输入 控制人物移动

在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色,那么我们首先需要获取键盘输入。
以下提供两种方法获取键盘。
这里尽量通过截图解释让大家理解代码的含义。

GetInput

void FixedUpdate()
{
	Move();
}
private void Move()
{
	if (Input.GetKey(KeyCode.W))
	{
		//isMove();
		transform.Translate(Vector3.forward * MoveSpeed * Time.deltaTime);
	}

	if (Input.GetKey(KeyCode.S))
	{
		transform.Translate(Vector3.back * MoveSpeed * Time.deltaTime);
	}
	if (Input.GetKey(KeyCode.A))
	{
		transform.Translate(Vector3.left * MoveSpeed * Time.deltaTime);
	}
	if (Input.GetKey(KeyCode.D))
	{
		transform.Translate(Vector3.right * MoveSpeed * Time.deltaTime);
	}
}

如果在3D游戏开发中有移动的动画,那么可以在Move中加入动画运行的代码

    if (Input.GetKeyDown(KeyCode.W))
	{
		animator.SetBool("move", true);
	}
    
	if (Input.GetKeyUp(KeyCode.W))
	{
		animator.SetBool("move", false);
	}

InputManager

请看注释

public float moveSpeed = 10;

void FixedUpdate()
{
	Move();
}
public void Move()
{
    float h = Input.GetAxisRaw("Horizontal");
    transform.Translate(Vector3.right * h * moveSpeed * Time.fixedDeltaTime, Space.World);
    //这里的GetAxisRaw 的返回值是一个数字,←键或者a键为负,→键或者d键为正
    //									 ↑键或者w键为正,↓键或者s键为负
    //所以这里是将返回值乘入移动的位置中,为负就向反方向运动。

	float v = Input.GetAxisRaw("Vertical");
    transform.Translate(Vector3.up * v * moveSpeed * Time.fixedDeltaTime, Space.World);
    //			 (向上运动 *(正为上,负为反方向)*运动速度*Time.fixedDeltaTime,Space.World);
}

这里的设置是可以方便代码的编写,可以点击Unity左上角的Edio,打开Project Setting里面的Input,这里的前两个变量名就是代码中双引号里的名字,分别代表控制前后(vertical)和左右(Horizontal)的移动。
里面的left right a d 都是可以按的键,也就是说用此方法上下左右wsad都可以控制玩家移动。
注意:这里的Name必须和代码中双引号的一致,里面的一切都可以更改,根据自己的情况,除非必要无需更改。
在这里插入图片描述 在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity 键盘控制人物移动——之输入方式代码的编写 的相关文章

  • 将处理后的图形绘制到另一个图形中

    我想将一个经过处理的图形绘制到另一个图形中 I have two graphics var gHead Graphics FromImage h var gBackground Graphics FromImage b Transform
  • 处理 fanart.tv Web 服务响应 JSON 和 C#

    我正在尝试使用 fanart tv Webservice API 但有几个问题 我正在使用 Json Net Newtonsoft Json 并通过其他 Web 服务将 JSON 响应直接反序列化为 C 对象 这里的问题是元素名称正在更改
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • ASP .NET MVC,创建类似路由配置的永久链接

    我需要帮助在 MVC 网站中创建类似 URL 路由的永久链接 Slug 已设置为 www xyz com profile slug 代码为 routes MapRoute name Profile url profile slug defa
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • std::map 和二叉搜索树

    我读过 std map 是使用二叉搜索树数据结构实现的 BST 是一种顺序数据结构 类似于数组中的元素 它将元素存储在 BST 节点中并按其顺序维护元素 例如如果元素小于节点 则将其存储在节点的左侧 如果元素大于节点 则将其存储在节点的右侧
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • 如何排列表格中的项目 - MVC3 视图 (Index.cshtml)

    我想使用 ASP NET MVC3 显示特定类型食品样本中存在的不同类型维生素的含量 如何在我的视图 Index cshtml 中显示它 an example 这些是我的代码 table tr th th foreach var m in
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 为什么 Ajax.BeginForm 在 Chrome 中不起作用?

    我正在使用 c NET MVC2 并尝试创建一个 ajax 表单来调用删除数据库记录 RemoveRelation 的方法 删除记录的过程正在按预期进行 删除记录后 表单应调用一个 JavaScript 函数 从视觉效果中删除该记录 Rem
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu

随机推荐

  • 多线程事务怎么回滚?说用 @Transactional 可以回去等通知了!

    背景介绍 1 最近有一个大数据量插入的操作入库的业务场景 需要先做一些其他修改操作 然后在执行插入操作 由于插入数据可能会很多 用到多线程去拆分数据并行处理来提高响应时间 如果有一个线程执行失败 则全部回滚 2 在spring中可以使用 T
  • C++day4(关系运算符的重载)

    关系运算符重载的作用 可以让两个自定义类型对象进行对比操作 代码实现关系运算符的重载 include
  • unity工程崩溃资源找回

    1 Unity死机未保存场景 当你在Unity中编辑场景 突然死机时 可以在项目文件目录中找到Temp文件夹 双击文件夹 找到 Backupscenes文件夹 把后缀为 backup的文件后缀改为 unity 然后拖进Unity的Proje
  • 2021-05-03

    一 R中安装 phyloseq 的方法 很多网上的教程使用的都是 source https bioconductor org biocLite R biocLite phyloseq 但是我尝试了很多次 最后还是没有成功 下面能成功安装 p
  • 连接Mysql出现Connection unexpectedly closed

    Mysql 版本 5 7 问题 本地服务可以正常连接MySQL 在服务器部署后连接出错 服务器日志 dev miku r2dbc mysql client MySqlConnectionClosedException Connection
  • IDEA2021从零开始搭建SSM框架手把手详细教程 (一)

    开发环境 macos IDEA 2021 mysql8 0 toma9 0 源码 https download csdn net download a2267542848 19730797 1 基本环境搭建 1 新建工程 新建后整个目录如下
  • nodejs的安装与配置

    NodeJs安装与配置 之前一直在网上自己找教程装 但是经常出问题 索性自己总结一个 1 安装nodejs 去网址 https nodejs org zh cn download msi和 zip msi是Windows installer
  • 物联锁项目失败原因分析

    一 背景 2022年3月份接手IM024物联锁项目救火 此项目主要用于医院共享轮椅 共享病床 此项目是从2021年初开始立项开发 投入了大量的人力物力 但是在2022年3月份时产品工作仍然不稳定 此项目基本上可以判定为一个失败的典型 为了吸
  • 在linux下jdk安装和建立Hadoop集群的过程实验报告(搭建Hadoop集群)。

    1 模板虚拟机环境准备 相关视频 半小时快速搭建Hadoop集群 哔哩哔哩 bilibilihttps www bilibili com video BV1x5411177Y spm id from 333 880 my history p
  • (pinia-plugin-persistedstate)pinia 持久化存储

    背景 我们使用pinia的时候 会遇到页面刷新的时候数据丢失 我们自己解决的话 就是在页面刷新之前将数据存储到本地 然后在页面打开的时候将数据从本地读出来 实现数据持久化 所以我们可以通过插件来直接帮我们完成这个操作来实现自动化存储 学习p
  • Qt QTextEdit 自动滚动内容/移动光标到最后一行

    QTextEdit往文本后添加内容超出视图 并不会自动滚动到最后 需要添加以下代码 ui gt StatustextEdit gt insertPlainText text 光标后添加文本 ui gt StatustextEdit gt m
  • STM32项目--基于STM32的办公室安保(智能家居)系统设计

    基于嵌入式系统的办公室安保系统设计 简介 设计一套基于STM32的办公室安防系统 系统内部包括门禁系统 灾害报警系统 人脸识别系统和交互中心四个子系统 门禁系统 主要实现对门禁卡的存储和读取并识别已存储卡片的信息并控制开门 如读取卡片为未存
  • px_em_rem

    px em rem px px是固定的像素 一旦设置了就无法因为适应页面大小而改变 em和rem em和rem相对于px更具有灵活性 他们是相对长度单位 意思是长度不是定死了的 更适用于响应式布局 就是说当父元素大小发生变化 相应的字体大小
  • (2021)Top5 免费视频编辑软件,视频剪辑必备工具

    全球排名前5的免费视频剪辑软件 Top5 VideoPad https www nchsoftware com videopad 免费版 和 付费版 Top4 VSDC http www videosoftdev com 免费版 和 付费版
  • 集群环境下Redis分布式锁

    一 前言 在上一篇文章中 已经介绍了基于Redis实现分布式锁的正确姿势 但是上篇文章存在一定的缺陷 它加锁只作用在一个Redis节点上 如果通过sentinel保证高可用 如果master节点由于某些原因发生了主从切换 那么就会出现锁丢失
  • 【IMGUI】 各种辅助类 EditorGUIUtility、EditorUtility、GUIUtility、GUILayoutUtility

    EditorGUIUtility class in Editor 继承自 GUIUtility EditorGUI 的各种辅助程序 EditorGUIUtility currentViewWidth 我尝试打印了下这个值和position
  • 网页验证码破解、使用cookie登录

    十二周内容笔记 day34 01 芝麻代理作业 主要是练习了一下显式等待 写起来还是比较麻烦 但是还挺好用 from selenium import webdriver from selenium webdriver chrome serv
  • 最新年龄估计综述(Deep learning approach for facial age classification: a survey of the state of the art)

    目录 TOC 文章目录 一 常用数据集 二 常用的年龄识别方法 1 多分类 MC 2 度量回归 metric regression MR 3 排序 ranking 4 深度标签分布学习 deep label distribution lea
  • ESP-IDF库开发教程之(4)--FLASH、BootLoader和FreeRTOS

    在之前的文章中 我描述了新的esp32芯片 并解释了如何设置开发环境 包括使用一种可选的图形IDE Eclipse 在开始开发程序之前 您需要了解框架的三个关键组件 flash bootloader和FreeRTOS操作系统 但别担心 在本
  • Unity 键盘控制人物移动——之输入方式代码的编写

    键盘输入 控制人物移动 在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色 那么我们首先需要获取键盘输入 以下提供两种方法获取键盘 这里尽量通过截图解释让大家理解代码的含义 GetInput void FixedUpdate Move