如何做自己的论坛网站,默认的首页文件名一般是,绵阳哪里可以做网站的地方,网站建设维护问题上期链接#xff1a;Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)-CSDN博客
上期我们聊了人物的受伤和死亡的逻辑和动画#xff0c;我们主要学习了事件的执行#xff0c;即我们在人物受伤时可能会触发很多的事件#xff0c;比如触发人物受伤的动画以及播放音乐等…上期链接Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)-CSDN博客
上期我们聊了人物的受伤和死亡的逻辑和动画我们主要学习了事件的执行即我们在人物受伤时可能会触发很多的事件比如触发人物受伤的动画以及播放音乐等可以是人物受伤时发出的声音然后我们要使用了覆盖和叠层的概念关键是多重事件的注册。这期我们来看看人物的三段攻击动画的执行。下方代码
//Player_control.cs
//只是更新加入的代码具体更多代码请看前边的内容private PlayerAnimations playeranimation;public bool isAttack;
...private void Awake(){inputControl.GamePlayer.Attack.started PlayerAttack;//按J键进行人物的攻击}
...private void PlayerAttack(InputAction.CallbackContext obj){playeranimation.PlayerAttack();isAttack true;}//PlayerAnimations.cspublic void SetAnimatons()//需要做很多动画的切换我们用这个函数来执行所有的动画切换。{...anim.SetBool(isAttack,playercon.isAttack);}public void PlayerAttack(){anim.SetTrigger(attack);正文
为了实现我们的人物攻击我们需要先看看人物动作的guid。有两端攻击前六张为第一段攻击第二段有两张其实在人物第二张素材中还要一个第三段的攻击那是暴击。
我们在管理人物动画的文件下创建三段攻击的动画buleAttack1、2、3根据之前的操作快速添加动画的素材。
我们先在Animator中删除我们刚刚创建的三段动画然后我又需要创建的图层动画。我们记得把我们的权重也设置为1。 我们创建一个新的空的state然后把刚刚创建好的三段攻击的动画添加进去那么我们想进行三段的攻击我们就必须要一个进入攻击状态的标志所有我们需要创建一个bool值取名为isAttack。
然后我们还需要添加一个触发的判断就是说我们每次点按后都触发下一次的攻击状态所以还需要创建新的判断为isTrrigger。然后攻击1到22到3的右侧条件都是一样的按键要按下才能触发。 然后如果在攻击1的动画播放90%后还没按下我们就会退出攻击的状态即我们会刷新我们的攻击那么我们下一次攻击时就会重新开始下面的三条箭头表示我们在该状态下如果不按下攻击切换到下一的攻击状态我们就需要退出我们的攻击动画了。这就相当于我们攻击时要连续按键不然在某阶段的攻击状态下我们就需要退出攻击状态其实这也很符合我们的直觉。
然后我们需要去到我们按键的地方去添加新的攻击的按键我们添加新的按键J键即可。
我们现在就可以通过代码对按键进行一个链接了。打开人物控制的代码组件然后我们在Jump按键绑定事件下添加新的函数人物攻击
inputControl.GamePlayer.Attack.started PlayerAttack;//这条是在Awake函数中初始化的
.....
private void PlayerAttack(InputAction.CallbackContext obj){} 我们还需要再人物动画创建新的动画切换功能的函数:
public void PlayerAttack(){anim.SetTrigger(attack);} 然后我们在人物控制的代码中我们获取人物动画的组件权限当我们按下攻击的按键时我们就执行触发上面的代码即让attack触发启动。因为我们刚刚还添加别的触发的条件所以还需要在人物控制代码的上头创建新的变量为bool类型isAttack。所以代码最后变成了
private void PlayerAttack(InputAction.CallbackContext obj){playeranimation.PlayerAttack();isAttack true;} 接下来我们进行攻击测试如果你的人物攻击第一下比较有延迟记得在人物攻击的图层触发的动画的State进入Attack1时直接改为不用等待直接播放即可就是说没有等待只要满足条件我们直接进入。然后我们需要每次在退出攻击状态后不管你是在那个阶段退出的攻击动画我们都需要改变人物isAttack的状态就是我们需要更新人物的攻击状态。所以我们只需在攻击的状态下创建代码在该动画播放完成后我们就进行一个状态的更新即可。
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){animator.GetComponentPlayer_control().isAttack false;}总结
我们这期聊了如何实现人物的三段攻击。这期的话就是一个动画的创建然后设定进入和退出的条件设置然后创建参数再在代码中链接起来即可因为按键绑定了攻击所以按下攻击按键我们使用注册事件的方式进行触发器的启动和改变人物的攻击状态为true再在人物攻击动漫播放完毕后我们再次人物的攻击状态。
未尽事宜以后可能会补充。
---------------------结束线