当前位置:   article > 正文

Unity类银河恶魔城学习记录1-14 AttackDirection源代码 P41

Unity类银河恶魔城学习记录1-14 AttackDirection源代码 P41
Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考
此代码仅为较上一P有所改变的代码

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili

PlayerPrimaryAttackState.cs
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class PlayerPrimaryAttackState : PlayerState
  5. {
  6. //p38 2.从ground进入
  7. private int comboCounter;
  8. private float lastTimeAttacked;//距离上一次攻击的时间
  9. private float comboWindow = 2;//可以间隔的时间
  10. public PlayerPrimaryAttackState(Player _player, PlayerStateMachine _stateMachine, string _animBoolName) : base(_player, _stateMachine, _animBoolName)
  11. {
  12. }
  13. public override void Enter()
  14. {
  15. base.Enter();
  16. if(comboCounter >2||Time.time>comboWindow+lastTimeAttacked)//当计数器超过2和间隔时间大于window时,进入第一个攻击动作
  17. {
  18. comboCounter = 0;
  19. }
  20. Debug.Log(comboCounter);
  21. player.anim.SetInteger("ComboCounter", comboCounter);//设置animtor里的comboCounter
  22. #region 选择攻击方向
  23. float attackDir = player.facingDir;
  24. if(xInput != 0)
  25. {
  26. attackDir = xInput;
  27. }
  28. #endregion
  29. //使其能改变攻击方向
  30. player.SetVelocity(player.attackMovement[comboCounter].x * attackDir, player.attackMovement[comboCounter].y);//给角色初速度,让角色在攻击触发时移动一点
  31. stateTimer = .1f;
  32. }
  33. public override void Exit()
  34. {
  35. base.Exit();
  36. player.StartCoroutine("BusyFor", .15f);
  37. comboCounter++;
  38. lastTimeAttacked = Time.time;
  39. }
  40. public override void Update()
  41. {
  42. base.Update();
  43. if(stateTimer<0)
  44. {
  45. player.ZeroVelocity();
  46. }//1.修改移动时攻击时后可以移动的BUG
  47. //2.但给了点时间模拟惯性可以动一点
  48. if (triggerCalled)
  49. {
  50. stateMachine.ChangeState(player.idleState);
  51. }
  52. }
  53. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/535556
推荐阅读
相关标签
  

闽ICP备14008679号