【Unity】连招动画切换方式(一)

本文介绍了一种在Unity中通过Animator和代码实现连击效果的方法。通过设置Animator参数和监听鼠标点击,动态切换攻击动画,同时在特定动画事件中控制连击的开始和结束。当连击超过设定次数后,自动重置连击计数。这种方法为游戏战斗系统中的连招设计提供了一种实现思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连招动画切换方式(一)

此方法可以实现的连击效果:
通过连续点击鼠标左键
攻击1 接 攻击2 接 攻击3 结束
在任意攻击动作中停止点击鼠标左键,则连击中断
三连击
二连击

一、Animator中的设置

先将一套连招的几个动作拖入Animator窗口中
Animator中
添加一个int类型的Parameter
添加Parameter
设置动画的退出条件
设置动画的退出条件
分别为三个攻击动画设置进入条件
设置动画的进入条件
Inspector面板
将动画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动画教程时,突然想到的一种设置连击动画的方法;
方法本身可能不太成熟,但能为各位带来一丝灵感就好;
后续或许会更新更多关于连招动画的分享;
欢迎大家提出建议,指出问题;
感谢观看!

Unity中,你可以使用以下代码来实现按键切换动画的功能: ``` using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { private Animator animator; // 动画状态机组件 void Start() { animator = GetComponent<Animator>(); // 获取动画状态机组件 } void Update() { if (Input.GetKeyDown(KeyCode.Space)) // 按下空格键 { animator.SetTrigger("SwitchAnimation"); // 设置动画切换触发器 } } } ``` 这段代码中,我们首先获取了动画状态机组件,并在Update函数中检测是否按下了空格键。旦按下空格键,就通过设置动画切换触发器来切换动画状态。你可以根据自己的需求修改按键和触发器的名称。这样,每次按下空格键,就会切换到下动画状态。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Unity按键切换状态机](https://blog.csdn.net/qq_36917144/article/details/118445402)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【Unity笔记】连招动画切换方式)](https://blog.csdn.net/Dugege007/article/details/128007018)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dugege007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值