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

发布时间 2023-12-14 16:48:04作者: 心霖の雨

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