利用状态机里的 布尔值R0L1,判断 左手攻击信号为True,右手攻击信号为False 。
下面的三个动作只需要消勾即可,保留镜像动作,然后把下方三个动作拉箭头到Exit
接下来要将左手持盾的动作修改,原来防御状态机无论左手拿什么一直是持盾状态,要修改变成拿武器时候不会做持盾状态
在 ActorController 34行处新建 private bool leftIsShield = true;作为测试左手防御和攻击的值。
在KeyboardInput里,新建KeyF和G作为测试防御和攻击的按键。配置好相关代码:
public string keyF;
public string keyG;
public MyButton KeyF = new MyButton();
public MyButton KeyG = new MyButton();
KeyF.Tick(Input.GetKey(keyF));
KeyG.Tick(Input.GetKey(keyG));
在IUserInput里 新建四个攻击防御的布尔值:
public bool la; 左手攻击
public bool ld; 左手防御
public bool ra; 右手攻击
public bool rd; 有手防御
注释掉attack布尔值。
在ActorController 里, 把31行private float lerpTarget;注销
在下方新建 public bool leftIsShield = true; 左手防御判断
把76行的anim.SetBool("defense", pi.defense);注销
把89行的pi.attack,改成pi.la || pi.ra,下面判断条件修改成:
if (pi.ra)
{
anim.SetBool("R0L1", false);
anim.SetTrigger("attack");
}
else if (pi.la&&!leftIsShield)
{
anim.SetBool("R0L1", true);
anim.SetTrigger("attack");
}
在下方新建一个持盾判断条件: 104行
if (leftIsShield)
{
if (CheckState("ground"))
{
anim.SetBool("defense", pi.defense);
anim.SetLayerWeight(anim.GetLayerIndex("defense"), 1);
}
else
{
anim.SetBool("defense", false);
}
}
else
{
anim.SetLayerWeight(anim.GetLayerIndex("defense"), 0);
}
打开LeftArmAnimFix增加
private ActorController ac;
在Awake增加
ac = GetComponentInParent<ActorController>();
标签:anim,defense,分离,左右手,黑魂,bool,SetBool,pi,public From: https://www.cnblogs.com/dontpanic1703/p/17560718.html