文件下载:地址
项目目标:实现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