玩出一款游戏 PM篇 之角色控制篇
玩出一款游戏 PM篇 之角色控制篇
PLAYMAKER 第一章 角色的行走设置
-----------------------------------------------------------------------------------------------------
在Unity里如何通过PM实现对角色的控制?
前面几章介绍了关于美术上的一些实现方法,到这里准备工作暂时告一段落,美术元素完成后,下面开始如何控制你的角色在游戏中行走移动,跳跃,射击。
因为要用到PM首先把PM安装到Unity里面和其他插件一样,只要把安装文件往引擎里拖动即可。
装好后,PM内容会在菜单上显示出来。
安装的文件也会出现在你的Project窗口里。
然后把我们带动画的3D文件导出FBX进入Unity里。
在菜单里找到Playmaker,点击选择PlayMaker Editor。
然后会看到一个这样的界面,按F1会有一些帮助提示。
帮助的右面,会有属性设置。
可以进行语言选择,有相应的中文简体。
其他一些大多是显示、颜色区分、加载内容等相关设置,在制作中无关紧要。可自行研究。
游戏功能的实现在这里进行,节点编辑窗口、状态机、事件、变量。
那么开始吧。
创建一个Cube做为地面。
拖出你的角色 查看场景里人物地面的比例。
按Ctrl+Shift+N创建一个空物体。
并把角色拖动到,空物体下做为子层级应用。把GameObject改名为Play-01。
在Play-01上添加Rigidbody和Capsule Collider,然后Rigidbody刚体Freeze选项里冻结Z轴的位移,和X、Z轴的旋转,因为我们要做的是一个2D视角的游戏,所以并不需要这些角度和位置的变化,碰撞盒刚刚好覆盖角色就可以了,主要是用来产生和物体的接触碰撞。添加好刚体和碰撞盒之后,点播放运行Unity这样角色就可以站立在刚刚创建的Cube上了。
选择层级下面的Play-Idle,在Anmation上添加你所制作的动画。这样你的模型文件在Unity里就包含了这个几个动作文件。
然后选择上一层级Play-01并在PM节点界面点右键,创建状态机,可以命名为动态转换。状态机顾名思义就是数值变量引起事件所产生的一些状态表现。
给起始状态节点命名为Movement。
然后在变量窗口选择下面的全局变量,添加一个全局Float浮点变量,主要是用来获得角色当前信息,可以根据当前信息进行判断角色的一个点并施加改变。
然后添加一个3维变量,改变角色坐标信息。
有了这两个变量之后,给状态里添加一些动作。
打开动作窗口,下面有各式各样的功能选择,动作、声音、颜色、特效、UI、等等。
找到Get Axis获取角色轴心点的位置
Multiplier里设置为2,数字越高移动速度会越快,记录在刚才创建的浮点变量上应用到每一帧。
增加动作Set Velocity设置速度作用到刚才的浮点变量上。这样点击Unity的播放按钮,按键盘的A和D键,角色就可以移动了是不是很神奇。
现在我们看到有些问题角色在移动的时候并不会向着移动的方向转身,这里我们就需要一个关于设置3D轴向变化的动作。打开动作窗口找到Set Vector3 XYZ,
Smooth Look AtDirection 这两个动作,并设置参数如下:
Smooth Loot At会让角色向量点面对特定的方向,Smooth Look里面0.1的数值越小,和上个轴向旋转变化融合越好,可以适当调整,Speed是这个动作的响应速度,数值越高响应速度越快。
实现了位移和旋转之后,角色显得还是很僵硬为什么,因为角色本身并没有调用走路的动画。下面的操作就是告诉大家如何调用动作。
选择Play_Idle层级。同样在PM节点界面点右键,创建状态机animation。
给起始状态命名为idle,然后再次点击右键创建状态,命名为walk。
在事件窗口分别输入walk和idle按回车键,创建事件。
在节点编辑窗口选择idle节点,点击右键选择添加过度里刚才创建的walk事件用来触发walk节点,然后选择walk节点在walk节点点右键选择添加过度,idle事件用来过度到idle状态节点。让彼此起到一个循环作用,当行走结束,就可以切换到待机。坐标发生变化时待机就可以切换到行走。
然后在动作窗口里查找到Float Compare和Play Animation两个动作,分别添加在idle节点和walk节点上。
在idle节点上的两个动作分别设置如图,浮点1选择为开始设置的,全局变量horizontalAxis,Tolerance为0,下面设置当浮点1数值大于或小于0时会触发事件到walk,
也就是坐标发生变化时,就会由待机切换到,走路状态。Play Animation在目前的这个状态播放,待机动作。动画名称里会选择响应的动画,我这里是Idle,BlendTime融合时机会0.2
在设置的时候FloatCompare里Every Frame要点击上,如果没有点上就只会触发一次事件。
Walk状态节点上浮点比较里,浮点1设置会公用的变量horizontalAxis,Tolerance同样为0。
在等于Equal这一项里设置为idle,当坐标不产生位移变化为0的时候由步行事件切换待机状态。
这样对角色简单的行走控制就算完成了,后面的教程会介绍到射击动作的添加,时间系统和角色怪物之间的互动。