Unity 3D作业七:人物模型

前言

中山大学数据科学与计算机学院3D游戏课程学习记录博客。

简单介绍

本次游戏决定使用两个预设来完成游戏设计,一个作为玩家,一个作为巡逻兵。
游戏介绍就不再赘述,接下来直接进入教程阶段。
本篇博客目的在于介绍如何使用网上的人物预设。

预设配置

预设下载

网上有免费的预设资源,寻找方法也很简单。
只需要百度"unity 资源",就可以找到资源网站。
Unity 3D作业七:人物模型_第1张图片
点击进入,可以通过筛选器来查找我们想要的资源。本次我们选择3D->角色->价格由低到高(FREE在前),就有如下结果:
Unity 3D作业七:人物模型_第2张图片
本次使用的是这个:
Unity 3D作业七:人物模型_第3张图片
点击"在Unity中打开"位置就可以进行下载(我已经下载过了)。然后可以在Unity中找到这个人物预设。

资源导入

通过Unity菜单栏 Window->Package Manager就可以导入刚刚下载的资源:

Unity 3D作业七:人物模型_第4张图片
先点击"Download"下载,然后点击"Import"导入预设即可。

预设打开

导入之后,想要查看下载导入的预设资源,可以在Assets对应的文件夹下查找:
Unity 3D作业七:人物模型_第5张图片

FootmanPBRHPPolyart文件夹就是我们刚刚下载的,所有的资源都存在这个文件夹中。
Unity 3D作业七:人物模型_第6张图片
显然,Prefabs文件夹中就是刚刚下载的预设。可以看到,有好几种预设。在这个游戏中,选定红色的小人为玩家模型,绿色的小人为巡逻兵模型。

怎么运用这些预设呢?如图:
Unity 3D作业七:人物模型_第7张图片
可见在Assets->Resources->Prefabs中存放着本次游戏需要用到的预设,把选定的预设拖拽到这个文件夹中,并修改文件名为对应的角色即可。

点击想要打开的预设,通过右侧栏中的Open Prefab打开预设,设置预设的属性:
Unity 3D作业七:人物模型_第8张图片
打开后是这样的:
Unity 3D作业七:人物模型_第9张图片

预设配置

以绿色小人为例进行预设配置,红色小人与绿色小人大概相同,留给读者自己操作。

首先打开绿色小人的预设,选定Patrol预设,添加两个部件:Rigidbody和Capsule Collider。这两个部件分别是为了使用物理引擎和碰撞检测。添加之后可以看到下图所示:

Unity 3D作业七:人物模型_第10张图片
有两个绿色的边框,一个是方形的,一个是球形的。方形的很大,在这个游戏中代表巡逻兵的检测范围,一旦玩家进入该范围,巡逻兵就追逐他;球形的几乎和小人重合,代表碰撞检测范围。
球形的大小可以通过Capsule Collider组件中的Radius和Height两个属性来改变(建议自己试一下感受效果),推荐大小和宽度与预设重合:
Unity 3D作业七:人物模型_第11张图片

点击Hips,添加Box Collider组件(这样的话才会出现那个方形框),通过改变Size来改变框的大小:
Unity 3D作业七:人物模型_第12张图片
属性配置完毕,下面进行动画器的配置。

预设动画器

以绿色小人为例,红色小人与绿色小人大概相同,留给读者自己操作。
在Assets文件夹中新建一个AnimatorController文件夹,在里面新建两个Animator Controller(右键->Create->Animator Controller),改名为PatrolController和PlayerController,然后可以开始动画器配置:
Unity 3D作业七:人物模型_第13张图片

双击打开PatrolController,然后可以进行动画器的编辑,最后是这样的:
Unity 3D作业七:人物模型_第14张图片
很简单,接下来介绍这个是怎么来的。

首先,很显然,想要产生一个动画器,就要有动画。每一个块块都代表一个动画(除了Any State、Entry、Exit这三个块)。这些动画来源于哪里呢?在导入的资源包中,Assets->FootmanRBRHPPolyart->Animations,打开这个文件夹:
Unity 3D作业七:人物模型_第15张图片
这个里面就是我们用到的动画。怎么知道哪个动画是哪个动作呢?单击一个动画,看右上角的名称就可以知道:
Unity 3D作业七:人物模型_第16张图片
很显然这是个Run动画。当我们挑选出来想要的动画,直接拖入动画器中,就可以形成一个块,代表了这个动画。
易知,我拖入了Run、attack_01、idle_01这三个动画(当然你想要更多复杂的动作,比如Jump,也可以拖入更多的块)。

接下来说一下白色的带箭头的线。每一条线代表一个条件转换。条件来源于哪里?就是旁边的Parameters栏中的参数,点击"+"号可以加入新的参数。我只使用了两个参数,shoot和run.shoot是Trigger类型的,run是Bool类型的:

Unity 3D作业七:人物模型_第17张图片
明白了参数,怎么应用于白线上的状态转换呢?选定一个状态转换:
Unity 3D作业七:人物模型_第18张图片
这个是idle_01到run的状态转换,点击它。可以看到右侧栏的Conditions属性,通过右侧的箭头,选择run,true值,来表示转换条件。意思就是当run为真时进行run动画。

很简单的吧!接下来自己构造红色小人的动画器吧!

动画器也要添加到预设中,打开预设:
Unity 3D作业七:人物模型_第19张图片
右侧栏,在Tag处更改标签,在Animator->Controller处挂载动画控制器。

预设脚本

预设往往需要一些脚本才能更好地被控制,所以要挂在一些脚本。
绿色小人(巡逻兵):挂载Patrol Data和Player Collide脚本。
Patrol Data脚本是为了记录巡逻兵地属性,Player Collide脚本是为了检测碰撞。

public class PatrolData : MonoBehaviour
{
    public int sign;                      //标志巡逻兵在哪一块区域
    public bool follow_player = false;    //是否跟随玩家
    public int wall_sign = -1;            //当前玩家所在区域标志
    public GameObject player;             //玩家游戏对象
    public Vector3 start_position;        //当前巡逻兵初始位置     
}

public class PlayerCollide : MonoBehaviour
{

    void OnCollisionEnter(Collision other)
    {
        //当玩家与侦察兵相撞
        if (other.gameObject.tag == "Player")
        {
            other.gameObject.GetComponent<Animator>().SetTrigger("death");
            this.GetComponent<Animator>().SetTrigger("shoot");
            Singleton<GameEventManager>.Instance.PlayerGameover();
        }
    }
}

红色小人(玩家):不挂载脚本。

小人的生成使用工厂模式,即PropFactory.

至此,人物模型配置完毕。

总结

所以说人物模型的预设配置还是比较简单的,唯一的困难可能就是你在往gitee上传资源的时候,需要上传很多文件吧。

你可能感兴趣的:(Unity,3D游戏,unity,游戏)