单纯只考虑跳跃的实现的话,只需考虑5个问题:
1.使用Trigger Type Signal触发型信号
2.要解决臭名昭著的问题:在一次触发时间里累积了两次的跳跃
3.锁死玩家输入,防止跳跃过程中的转向
4.锁死输入同时保留速度,使其能够在跳跃过程中向前移动
5.提供y分量的冲量,让其真正跳离地面
OK,摩拳擦掌,跃跃欲试。
1.使用触发型信号(Trigger Type Signal)
在实现Run中,使用的是按压型信号(Pressing Type Signal),与其不同的是,触发型信号的取信号时间段为当玩家键入指定键的那一刻,这就很符合用来实现跳跃,按一次跳一次,而不是按住一直跳。
首先宣告一个string变量记录触发跳跃的按键信息,然后宣告一个bool变量记录触发型信号:
public string keyB = "space";
public bool jump;
然后使用Input.GetKeyDown()来判断玩家是否键入了空格,是就返回true给jump变量;反之返回false。
jump = Input.GetKeyDown (keyB);
在实现Run时就有提到过Input.GetKeyDown(),它是在当用户键入指定键的那一帧时就返回true,就很符合用来实现触发型信号。
代码部分OK,再来看看Animator视窗,添加jump动画然后让其与ground联系起来(两者之间Make Transition) :
Animator
然后在ground到jump的Transition里消钩Has Exit Time,这意味着当接收到跳跃的触发信号时,不用等ground的动画播放完,直接中断后播放jump的动画。
消钩Has Exit Time
而jump到ground的Transition默认设置就好。
现在我们应该在Animator视窗里的Parameters那一栏(参数栏)创建一个Trigger型参数,命名为jump。
命名为jum