【unity笔记】连招动画切换方式(一)_dugege007的博客-爱代码爱编程
连招动画切换方式(一)
此方法可以实现的连击效果:
通过连续点击鼠标左键
攻击1 接 攻击2 接 攻击3 结束
在任意攻击动作中停止点击鼠标左键,则连击中断
一、Animator中的设置
先将一套连招的几个动作拖入Animator窗口中
添加一个int类型的Parameter
设置动画的退出条件
分别为三个攻击动画设置进入条件
将动画Attack1 Attack2 Attack3 的进入条件分别设置为
Combo Equals 1
Combo Equals 2
Combo Equals 3
二、代码部分
为角色挂上这个脚本
using UnityEngine;
public class ComboTest : MonoBehaviour
{
//获取动画组件
private Animator anim;
//是否开始连击
private bool startCombo;
//当前连击次数
private int combo;
private void Start()
{
//获取动画组件
anim = GetComponent<Animator>();
}
private void Update()
{
//如果按下鼠标左键
if (Input.GetMouseButtonDown(0))
{
//如果Combo值为0
if (anim.GetInteger("Combo") == 0)
{
//将Combo值增加1
combo++;
//播放Attack1
anim.SetInteger("Combo", combo);
}
//如果在可以连击的时间范围中
if (startCombo)
{
//将Combo值增加1
combo++;
//如果combo值大于3
if (combo > 3)
{
ResetCombo();
}
//播放后续的攻击动画
anim.SetInteger("Combo", combo);
startCombo = false;
}
Debug.Log("当前连击次数:" + combo);
}
}
//动画事件中 StartComboState() 和 EndComboState() 之间的时间段里可以进行连击
private void StartComboState()
{
startCombo = true;
}
private void EndComboState()
{
startCombo = false;
}
/// <summary>
/// 重置连击
/// </summary>
private void ResetCombo()
{
combo = 0;
anim.SetInteger("Combo", combo);
EndComboState();
}
}
三、Aniamtion中的设置
在每个动画中合适的时间点添加事件
StartComboState() 和 EndComboState() 之间是可以进行连击的时间
每个动画的最后添加 ResetCombo()
四、总结
这是笔者在看Siki学院Unity动画教程时,突然想到的一种设置连击动画的方法;
方法本身可能不太成熟,但能为各位带来一丝灵感就好;
后续或许会更新更多关于连招动画的分享;
欢迎大家提出建议,指出问题;
感谢观看!