赞
踩
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class PlayerPrimaryAttackState : PlayerState
- {
- //p38 2.从ground进入
-
- private int comboCounter;
-
- private float lastTimeAttacked;//距离上一次攻击的时间
- private float comboWindow = 2;//可以间隔的时间
- public PlayerPrimaryAttackState(Player _player, PlayerStateMachine _stateMachine, string _animBoolName) : base(_player, _stateMachine, _animBoolName)
- {
- }
-
- public override void Enter()
- {
- base.Enter();
- if(comboCounter >2||Time.time>comboWindow+lastTimeAttacked)//当计数器超过2和间隔时间大于window时,进入第一个攻击动作
- {
- comboCounter = 0;
- }
- Debug.Log(comboCounter);
-
- player.anim.SetInteger("ComboCounter", comboCounter);//设置animtor里的comboCounter
-
- #region 选择攻击方向
- float attackDir = player.facingDir;
-
- if(xInput != 0)
- {
- attackDir = xInput;
- }
- #endregion
- //使其能改变攻击方向
- player.SetVelocity(player.attackMovement[comboCounter].x * attackDir, player.attackMovement[comboCounter].y);//给角色初速度,让角色在攻击触发时移动一点
-
- stateTimer = .1f;
- }
-
- public override void Exit()
- {
- base.Exit();
- player.StartCoroutine("BusyFor", .15f);
- comboCounter++;
- lastTimeAttacked = Time.time;
- }
-
- public override void Update()
- {
- base.Update();
- if(stateTimer<0)
- {
- player.ZeroVelocity();
- }//1.修改移动时攻击时后可以移动的BUG
- //2.但给了点时间模拟惯性可以动一点
- if (triggerCalled)
- {
- stateMachine.ChangeState(player.idleState);
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。