//新增PlayerDeadState
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerDeadStats : PlayerState
{
public PlayerDeadStats(Player _player, PlayerStateMachine _stateMachine, string _animBoolName):base(_player, _stateMachine, _animBoolName){}
public override voidEnter(){
base.Enter();}
public override voidAnimationFinishTrigger(){
base.AnimationFinishTrigger();}
public override voidExit(){
base.Exit();}
public override voidUpdate(){
base.Update();
player.SetZeroVelocity();//设置玩家无法移动}}
//修改Player脚本
public PlayerDeadStats deadStats{get;private set;}
deadStats=new PlayerDeadStats(this,stateMachine,"Die");
public override voidDie(){
base.Die();
stateMachine.ChangeState(deadStats);}
//Enemy脚本修改
public string lastingAnimBoolName { get; private set;}//用于保存最后播放的动画名称
public virtual voidAssignLastAnimName(string _animBoolName){
lastingAnimBoolName = _animBoolName;}
//新增SkeletonDeadState脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SkeletonDeadState : EnemyState
{
private Enemy_Skeleton enemy;
public SkeletonDeadState(Enemy _enemyBase, EnemyStateMachine _stateMachine, string _animBoolName, Enemy_Skeleton _enemy):base(_enemyBase, _stateMachine, _animBoolName){
this.enemy = _enemy;}
public override voidEnter()//当Skeleton死亡时,则播放死亡动画,且将Skeleton的碰撞检测失灵,使其能掉落{
base.Enter();
enemy.anim.SetBool(enemy.lastingAnimBoolName, true);
enemy.anim.speed=0;
enemy.cd.enabled=false;
stateTimer=.1f;}
public override voidUpdate(){
base.Update();if(stateTimer>0){
rb.velocity=new Vector2(0,10);//在死亡状态时,则先小跳,后掉落的常见简易死亡效果}}// Start is called before the first frame update}
//修改Enemy_Skeleton脚本
public SkeletonDeadState deadState { get; private set;}
deadState = new SkeletonDeadState(this, stateMachine,"Idle", this);