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

既然是实现按下按键进行一个动作,比如行走动作。那么就需要在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表达式创建一个方法。

posted @   心霖の雨  阅读(143)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示