《土豆荣耀》重构笔记(八)添加角色的动画

本文详细介绍了在Unity中为角色构建动画状态机的过程,包括制作动画状态机,定义状态转换规则,如Idle、Walk、Jump、Shoot和Death等,并通过代码控制状态机的切换。此外,还讲解了如何修改动画设置以优化动画效果,如禁用循环播放和调整动画速度。
摘要由CSDN通过智能技术生成


前言

  为了提高玩家的游戏体验,我们常常需要在角色运动的时候,根据它的运动状态播放对应的动画。为了能够控制当前播放什么动画,我们首先需要制作动画状态机,再用代码去控制动画状态机切换当前的状态,从而切换当前播放的动画。


制作角色的动画状态机

  我们在给角色制作动画状态机来控制我们之前制作好的角色动画之前,我们需要确定我们有哪些状态,以及控制这些状态转移的条件是什么。

各个角色动画之间的状态转换规则如下:

  1. 当角色不着地时,不播放任何状态
  2. 角色着地时播放Idle播放动画
  3. 当角色着地水平移动时,播放Walk动画
  4. 当角色触发跳跃事件时,播放Jump动画
  5. Jump动画播放完之后,着地播放Idle动画
  6. 当角色触发射击事件时,播放Shoot动画
  7. Shoot动画播放完之后,着地播放Idle动画
  8. 当角色触发死亡事件时,播放Death动画
  9. Death动画播放完之后,自动播放Falling动画

  根据状态转换规则,我们可以得出控制状态转换的所有参数

状态转换参数:

  • Grounded:Bool
  • Speed:Float
  • Jump:Trigger
  • Death:Trigger
  • Shoot:Trigger

  接着,我们在Unity顶部菜单栏选中Window->Animator打开动画状态机编辑窗口,然后在Hierarchy窗口中选中Player编辑角色的动画状态机。在Unity中,一个状态控制一个动画。根据上面状态转换规则,我们还需要创建一个没有任何动画的空状态,并将其作为整个状态机的默认状态。我们在Animator窗口中点击鼠标右键选择Empty创建一个空状态,将其命名为Empty之后,点击鼠标右键编辑这个状态,然后选择Set as Layer Default State将其设置为默认状态。最后,我们根据上面得到的控制状态转换的所有参数来创建状态转换参数,并构建角色的动画状态机如下:

创建状态机

  创建完动画状态机之后,我们为状态之间的转移边设置条件。点击状态之间的转移边,然后在右侧的Inspector面板进行设置。

设置转移边

每条转移边的具体设置如下:

  • Empty -> Idle:
    • Has Exit Time: false
    • Interruption Source": Next State
    • Conditions: Grounded(true)
  • Idle -> Empty:
    • Has Exit Time: false
    • Conditions: Grounded(false)
  • Idle -> Walk:
    • Has Exit Time: false
    • Conditions: Speed(Greater 0.1)
  • Walk -> Idle:
    • Has Exit Time: false
    • Interruption Source": Next State
    • Conditions: Speed(Less 0.1)
  • Walk -> Empty:
    • Has Exit Time: false
    • Conditions: Grounded(false)
  • AnyState -> Jump:
    • Has Exit Time: false
    • Can Transition To Self: false
    • Conditions: Jump(Trigger)
  • Jump -> Empty:
    • Has Exit Time: true
    • Interruption Source": Next State
    • Conditions: List is Empty
  • AnyState -> Shoot:
    • Has Exit Time: false
    • Can Transition To Self: True
    • Conditions: Shoot(Trigger)
  • Shoot -> Empty:
    • Has Exit Time: true
    • Interruption Source": Current State then Next State
    • Conditions: List is Empty
  • AnyState -> Death:
    • Has Exit Time: false
    • Can Transition To Self: false
    • Conditions: Death(Trigger)
  • Death -> Falling:
    • Has Exit Time: true
    • Conditions: List is Empty

加入控制代码

  角色的动画状态机编辑完成之后,我们还需要使用代码来控制动画状态机的状态转移。打开PlayerController.cs,插入动画控制代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(Rigidbody2D))]
[RequireComponent(typeof(AudioSource))]
[RequireComponent(typeof(Animator)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值