您的位置:首页 > 移动开发 > Unity3D

《unity》实现对游戏人物的控制

2018-03-17 21:57 1521 查看

unity角色控制

在开始对角色实施控制前,我们来梳理下完成角色控制的思路: 

首先,对于一个角色,我们需要 绑定模型动作 添加行为 绑定摄像机与角色的关系。

这三部分组成了player主体  :

  为模型添加 行为(behaviour) 后,模型会对玩家的行为做出反馈。
  为模型添加 动画(Animator)后,模型会播放"行为"所对应的动画.

  摄像机(camera)是玩家的视角,是游戏的表现形式。

一,绑定模型动画: 

    各位可以在网上找到大量已绑定骨骼带动画的模型。导入后,在资源窗口中调用,如

我们将模型拖入场景中,

此时再将模型的贴图直接拖拽至模型上,unity会自动生成材质。我们可以对材质进行编辑

现在我们完成了模型导入工作,现在我们开始对模型进行动画绑定。
我们选中模型,在组件窗口添加animator组件。


animator组件要求 一个 动画控制器(animator controller)   角色骨骼(avatar,带动画的模型自带)



我们将创建好的 New Animator controller挂载到animator组件上。之后便是进入控制器对模型动画进行绑定了。(解释一下,如控制器在接收到玩家按下某按键后,会播放某动作,某些数值如血量到某个界限后会播放某动画,限于篇幅这里只简单介绍下控制器用法) 




若想系统完整地了解这部分知识,可到  unity圣典  查找 动画控制器的相关文档。至此模型动画绑定完成。
二,添加行为     我们设定了模型动画,速度为零时(默认状态),播放idle动作(等待),
                                      速度大于零时(由默认状态到状态一),播放跑动动作。
                                      血量为零时(某状态跳转至死亡状态),播放死亡动画。
      但这里有个问题,那就是动画是播放了,可是人物的实际位置并没有发生变化。
                                 血量变量是有了,可是要怎么控制血量。
那就得通过写脚本(unity以c#为脚本语言)来解决了。
    通过 transform.Translate(方向*速度*帧率)实现角色位移,乘上帧率是为了避免帧率对速度的影响。
    通过在脚本上定义变量,用public将其暴露出来给unity,结合“ 动画控制器” 用于状态判断。
(如人物速度speed暴露给控制器后,控制器用其作为判断条件,通过不断的判断,在不同的状态间快速跳转,实现动画播放与人物位移同步)

三,镜头(camera)控制

镜头的设置就大有学问了,镜头所看到的便是玩家所看到的。
第一人称还是第三人称又或者是上帝视角,这就完全取决于制作者对镜头的设置。
镜头也是需要通过脚本来控制的。
我们也可以在镜头上添加滤镜,对色彩饱和度等进行调节。
角色控制实现:



                                                                                    第三视角
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: