p=60 Counter’s attack Window ,类恶魔城Demo学习
p59添加了对怪物昏迷功能,这次p60加上弹反功能(部分)
注:只实现了玩家成功弹反后,怪物的判断。玩家弹反输入暂时还没做
新加功能:弹反窗口
思路:新加判断变量和辅助图形,当窗口内检测到时既触发弹反。在动画内插入触发器方法,用动画触发器控制是否在窗口内。
EnimyTrigger脚本新加代码:
private void OpenCountWindow() => enemy.OpenCounterAttackWindow();
private void CloseCountWindow() => enemy.CloseCounterAttackWindow();
Enemy脚本新加代码:
protected bool canBeStuned; //是否能够昏迷
[SerializeField] protected GameObject counterImage; //显示是否在窗口的展示图形
//是否在弹反窗口
public virtual void OpenCounterAttackWindow()
{
canBeStuned = true;
counterImage.SetActive(true);
}
public virtual void CloseCounterAttackWindow()
{
canBeStuned = false;
counterImage.SetActive(false);
}
public virtual bool CanBeStuned()
{
if (canBeStuned)
{
counterImage.SetActive(false);
return true;
}
return false;
}
Enemy_Skeleton脚本新加代码(重写继承的CanBeStuned方法):
protected override void Update()
{
base.Update();
if (Input.GetKeyDown(KeyCode.U))
{
stateMachine.ChangeState(stunState);
}
//CanBeStuned(); 可自己测试用,这个方法是玩家弹反时调用的,看是否可弹反
}
public override bool CanBeStuned()
{
if (base.CanBeStuned())
{
//弹反成功肯定跳去stunState
stateMachine.ChangeState(stunState);
return true;
}
return false;
}