既然是实现按下按键进行一个动作,比如行走动作。那么就需要在InputControl内加入按键,并通过C#代码调用这个按键绑定一个事件来实现此功能
在InputControl内加入新的按键
打开PlayerInputControl
创建一个新的按键组,并绑定Shift(通过Shift键控制行走动作)
通过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表达式创建一个方法。