Unity-BattleStar丨6. 动画系统-让BattleStar游戏中的角色动起来

2024-08-14 16:33:44 浏览数 (1)

文件下载:地址

项目目标:实现NPC防御和踢腿动作

一、导入模型

1、新建一个空项目,导入Cha07.unitypackage,打开Scenes里的BattleStar_GuideScene并进入,点击右上角的Default按钮,切换至Tall

2、双击Main Camera,放大进入模型内部

3、在Assets-Plugins-ArmorWarrior-Prefabs里,找到Arm.model,并拖到当前游戏场景中去

4、点击Hierarchy里的Arm.model,注意观察Camera朝向,通过在Scenes里移动模型或通过Arm.model-Inspector改变Transform数值,将模型调到Camera能观察到的位置,最后将模型Transform Position的Y值设置为0

二、设置NPC基础状态机

动画控制逻辑:

模型分为人形和非人形两种,模型通过其Inspector-Animator Controller栏,链接到状态机Animator Controller,Animator Controller里存储着控制模型动作的各个基础单元Animation Cips。在状态机里面,我们又可以通过设置各个条件,只要条件满足,即可实现模型动画的切换

而Animation Clips是如何控制模型同步动作的呢?这就包含了骨骼映射原理。Unity自带一套骨骼,动画师创建的模型也包含一副骨骼,骨骼映射即将Unity的骨骼映射到动画师创建的模型骨骼上去。而我们通过Animation Clips(它即可是动画师创建的, 也可是我们自己用Unity制作的)控制Unity骨骼,从而完成场景中实际模型的运动

1、在Assets里新建文件夹AnimatorControllers,在此文件夹右键新建Animator Controller,重命名Arm。将Arm赋值给Arm.model-Inspector-Animator Controller

2、双击Arm,在Assets里搜索“search”,将search拖到Animator窗口中去

3、Assets搜索“attack_jab_L”、“attack_kicck_R”,并将其添加进Animator窗口

4、在Animator窗口里的search上右键“Make Transition”连接至attack_jab_L,同理从search连接至attack_kicck_R、从下方 两个Animation Clip再反向连接至search

5、在左侧的Parameters里点击 添加Float型变量,重命名为“a”

6、给状态机切换动画设置条件

a、点击search到attack_jab_L的线段,在其Inspector-Conditions里点击 ,参数改为“Less”“ -0.02”,取消勾选“Has Exit Time”

b、点击attack_jab_L到search的线段,在其Inspector-Conditions里点击 ,参数改为“Greater”“-0.01”

c、search到attack_kicck_R,“Greater”“0.02”,取消勾选“Has Exit Time”

d、attack_kicck_R到search,“Less”“0.01”

7、在Assets新建Scripts文件夹,新建名为Arm的C#,代码如下

代码语言:javascript复制
using UnityEngine;

public class Arim : MonoBehaviour {

    private Animator anim;

	void Start () {

        anim = GetComponent<Animator>();
	}
	
	void Update () {
        anim.SetFloat("a", Input.GetAxis("Horizontal"));
	}
}

8、运行项目,按下A或D,Enjoy

项目展示:

动画系统其他各功能链接:动画系统TimeLine

0 人点赞