首页 > 其他分享 >Unity引擎2D游戏开发,实现按键行走

Unity引擎2D游戏开发,实现按键行走

时间:2023-12-14 16:58:39浏览次数:28  
标签:runSpeed walkSpeed 2D Unity 行走 按键 speed 赋值

既然是实现按下按键进行一个动作,比如行走动作。那么就需要在InputControl内加入按键,并通过C#代码调用这个按键绑定一个事件来实现此功能

在InputControl内加入新的按键

打开PlayerInputControl
image
创建一个新的按键组,并绑定Shift(通过Shift键控制行走动作)
image

通过C#代码调用按键,并实现控制行走的逻辑

既然是需要控制行走动作,那么就是通过按下Shift让人物X轴行走的速度减半,降低了速度达到一个阈值,那么就会表现为行走的动画(动画设置)

新建两个变量

private float runSpeed;
private float walkSpeed => speed / 3f;

一个是runSpeed跑步速度,walkSpeed是走路速度。这里的走路速度是通过人物速度进行除法运算的来的,通过一定的比例进行控制。“=>”为lamda语句,相当于写了一个方法,speed / 3f就是方法体内的语句

runSpeed = speed;
playerInputControl.Gameplay.WalkButton.performed += ctx =>
{
    if (physicsCheck.isGround)
    {
        speed = walkSpeed;
    }
};

playerInputControl.Gameplay.WalkButton.canceled += ctx =>
{
    if (physicsCheck.isGround)
    {
        speed = runSpeed;
    }
};

首先runSpeed就是人物移动的满速,所以直接赋值。

为什么不直接在全局变量那里直接lamda赋值?
因为在awake方法体内赋值不会因为此方法重新赋值导致runSpeed被更改,在全局变量赋值会因为awake内的重新赋值导致只会有重新赋值后的数值。

performed为按键按下触发事件,canceled为按键抬起后触发事件。
ctx =>为直接在方法体内通过lamda表达式创建一个方法。

标签:runSpeed,walkSpeed,2D,Unity,行走,按键,speed,赋值
From: https://www.cnblogs.com/xinlindeyu/p/17901507.html

相关文章

  • Chat2DB接入文心一言AI教程(原创教程,转载请注明)
    引言关于Chat2DB和文心一言是啥我就不赘述了,由于Chat2DB自带的ai有调用次数限制,所以想着接入百度的文心AI,但是由于网上没有找到相关的教程,此方法是本人研究了一段时间才弄出来的,顺便记录一下备忘,也希望对有同样需求有所帮助!一、注册并实名认证百度智能云账号百度智能云地址:点击......
  • Unity3D协议怎样通过应用层来实现可靠性
    Unity3D是一款流行的游戏开发引擎,它提供了丰富的网络功能来支持多人游戏。其中,UDP(UserDatagramProtocol)是一种无连接的传输协议,它提供了高效的数据传输,但不保证数据的可靠性。本文将介绍如何通过应用层来实现UDP协议的可靠性,并给出技术详解和代码实现。对啦!这里有个游戏开发交......
  • Unity3D 如何读取策划给定的Excel表格详解
    前言Unity3D是一款非常流行的游戏开发引擎,它可以帮助开发者快速构建游戏并进行测试和发布。在游戏开发过程中,策划经常会提供一些Excel表格,这些表格包含了游戏中的各种数据,如角色属性、技能效果等等。那么,如何在Unity3D中读取这些Excel表格呢?本文将详细介绍Unity3D如何读取策划给......
  • Unity3D 开发中有那些提升效率的高级技巧详解
    Unity3D是一款强大的游戏开发引擎,它提供了许多功能和工具来帮助开发者提高效率。本文将详细介绍Unity3D开发中的一些高级技巧,包括资源管理、内存优化、代码优化以及性能调优等方面。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发......
  • Unity3D UDP协议怎样通过应用层来实现可靠性
    Unity3D是一款流行的游戏开发引擎,它提供了丰富的网络功能来支持多人游戏。其中,UDP(UserDatagramProtocol)是一种无连接的传输协议,它提供了高效的数据传输,但不保证数据的可靠性。本文将介绍如何通过应用层来实现UDP协议的可靠性,并给出技术详解和代码实现。对啦!这里有个游戏开发交......
  • Unity引擎2D游戏开发,创建人物动画
    给人物创建Animator动画组件在素材库新建Animation文件夹专门存动画相关的文件Animation文件夹中创建Player文件夹右击Player文件夹,创建AnimatorController将新建的AnimatorController赋予人物中Animator组件中的Controller选择Window,选择Animation,打开Animator窗......
  • Unity引擎2D游戏开发,解决空中无限跳跃以及黏墙问题
    一、解决空中无限跳跃解决空中无限跳跃的根本就是添加落地检测,即在地面上才能进行跳跃(二段跳功能以后再开发)在文件夹内新建PhysicsCheck物理检测脚本在里面开发人物物理检测相关功能添加isGround布尔值变量,接触地面则为1,空中则为0。以及两种检测变量:checkRadius检测半径......
  • Unity升级到2022版本后,打开Spine会卡住
    1)Unity升级到2022版本后,打开Spine会卡住2)iPhone在同时播放多个音效的时候会压低某些音源的音量3)在Y77手机上出现IMGSRV:GetMainShaderConstantBufferBaseAddress:Unsupported4)UE4打包后在部分安卓机型出现“花屏”这是第364篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖......
  • Unity引擎2D游戏开发,C#实现人物跳跃
    一、Component内,实现变量参数分栏[Header("XXXX")]二、在新建的InputActions中添加跳跃绑定三、在2D刚体所绑定的C#代码中调用InputActions中新建的跳跃动作在unity中,跳跃动作相当于对2D刚体施加Y轴方向的力。因此,增加一个力数值的变量jumpForce。publicfloatjumpF......
  • Unity3D 第一人称角色控制器,第一人称相机,摄像机的关系详解
    Unity3D是一款强大的游戏开发引擎,可以用于创建各种类型的游戏。在游戏中,第一人称角色控制器、第一人称相机和摄像机是密切相关的组件,它们共同协作来实现游戏的第一人称视角。下面将详细解释它们之间的关系,并给出代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游......