Unity项目-黑魂复刻(二)玩家控制器(跳跃)

跳跃信号

要实现跳跃,首先要实现跳跃的输入。跳跃信号是按下的当场触发的一次性触发控制(Trigger Once Signal),这个信号转化为编程语言就是bool值,通过控制真还是假判定是否按下跳跃键

public class PlayerInput : MonoBehaviour
{
   
    ...

    // 一次性信号
    public bool jump; //跳跃信号
    public bool lastJump; //记录上一次的jump信号 用于和当前jump信号做比对 理解为是否正在跳跃
    
    ...
	void Update()
    {
   
    	 bool newJump = Input.GetKey(KeyB);
        //判断跟上一个状态是否一致,会出现由1.没按下到按下 2.按下到松开两种情况(Blastjump是true时,这种排除)
        if (newJump != Blastjump&&Blastjump != true)
        {
   
            Bjump = true;
        }
        else
        {
   
            Bjump = false;
        }
        //上一个状态
        Blastjump = newJump;
    }
    

Input.GetKey 可以使用 GetKeyDown按下的时候Bjump就是true,从而忽略if判断语句

跳跃动画的应用

使用trriger参数作为触发跳跃动画的条件

在这里插入图片描述

if (pi.Bjump == true)
{
   
    anim.SetBool("jump", true);
}

跳跃时应该锁死用户输入

为了让跳跃时不能再控制角色旋转,我们需要将Input在跳跃时锁死。之前我们就已经实现了输入模块的软开关(inputEnabled)。现在的问题就是何时开关输入模块,我们将使用动画状态机StateMachineBehaviour脚本来实现控制。如下图,脚本的创建方法,需要注意:不能将大量的逻辑代码写入其中。

  • 脚本的作用主要是当进入或者退出这个状态时就会触发相应的语句

在这里插入图片描述
以下是FSMOnEnter 的代码,作用是通过重载OnStateEnter,在动画状态机执行到挂载该脚本的动画状态时向父物体及自身的所有MonoBehavior发送消息调用名叫msg的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值