Unity引擎2D游戏开发,实现按键行走
既然是实现按下按键进行一个动作,比如行走动作。那么就需要在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表达式创建一个方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!