您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 毕加索的仰望 于 2019-6-16 11:44 编辑
目录: 1 创建游戏模式 2 自定义移动控制 3 实现角色的跳跃 4 导入官方动画包 5 应用角色模型 6 创建可破坏的网格物体 7 开始游戏和结束游戏 8 应用官方动画蓝图 9 添加一个触发器动画 10 设置角色的冲刺 11 给人物添加血条 12 创建一个GameOver界面 13 为角色添加脚步声和粒子效果
1 创建游戏模式创建蓝图类Character、playe Controller、GameModeBase,并分别重命名为MyCharacter、MyController、MyMode。
双击打开MyMode,将Controller class和pawn class设置为创建的MyController和MyCharacter。 在世界设置里将游戏模式设置为创建的MyMode 2 自定义移动控制打开项目设置 在Engine下找到input 点击Axis Mappings后的“+”号,添加MoveForward(向前走)映射,按w键向前移动一个单位,按s键向前移动 —1个单位(即向后移动一个单位) 再次点击“+”号,添加MoveRight(向右走)映射:按A键向右走—1个单位,按D键向右走1个单位。 打开MyCharacter蓝图在Event Graph中实现这些映射,右键添加MoveForward事件 右键添加Get Control Rotation,获取角色的移动控制权 添加Break Rotator拆分角色的移动信息(前后左右移动是在一个平面上运动的) 添加Make Rotator,让角色移动 把移动信息拆分,向前移动(添加Get Forward Vector)和向右移动(添加Get RightVector) 添加两个Add Movement Input,来获取移动的输入值 将移动方向(Vector)与movement的direction相连,告知角色移动的方向,将移动事件的AxisValue与movement的Scale Value相连,获取移动的单位 编译,保存,测试三连。 同上,添加Turn和Lookup映射,分别控制角色向左向右看和向上向下看 打开Mycharacter蓝图实现映射 3 实现角色的跳跃
在输入里添加跳跃动作映射 打开MyCharacter蓝图,实现映射 添加jump映射事件,和jump、stop jumping两个函数,分别相连 如何控制角色跳跃的高度呢? 在蓝图左侧点击CharacterMovement(Inherited),在Details面板下可以找到 4 导入官方动画包
在虚幻商场里找到免费的AnimStarterPack并下载 下载好后,在库里面将它添加到现在的工程。 5 应用角色模型
打开MyCharacter蓝图,在Viewport视口中点击左侧的mesh在细节面板中将导入的骨骼文件应用到mesh里 调整角色使其面向前(箭头方向) 现在运行之后是看不到角色的。
在添加组件里添加一个摄像机 然后添加一个摄像杆 将摄像机拖动到摄像杆的下方,形成一个层级关系,这样就可以让摄像杆控制摄像机的移动 调整摄像杆的位置,让摄像机可以拍到角色 现在运行后就可以看到角色了,但是你会发现无法向上向下看。
打开角色蓝图,选中摄像杆,在细节面板中勾选使用角色控制。 6 创建可破坏的网格物体
在初学者内容里找到一个正方体 右键创建可破坏的网格 打开这个可破坏的网格,选中物体,将Random Seed更改为10,在上方选中Fracture Mesh来打碎物体,滑动滑杆来预览效果(cell sitecount是打碎的块数,默认为25) 调整参数,让网格可以应用伤害 将这个可破坏的物体拖放到空中 选中这个物体,在细节面板中勾选解算物理这个选项 运行后可以看到,这个物体从空中掉下来然后摔碎了。 7 开始游戏和结束游戏
创建一个空的开始游戏关卡 右键新建一个控件蓝图,命名为start 打开蓝图,在左侧边栏拖动一个vertical box到视图,随意调整大小,拖动两个button到vertical box下,再次拖动两个text到button下,注意层级关系。 将两个text里的文本分别改为开始游戏和结束游戏 选中开始游戏的button,在events里添加点击事件 添加打开关卡函数 保存退出。
打开关卡蓝图 添加创建控件节点,将控件选中为start 添加add to viewport节点,将这个控件显示到视口 接下来,显示鼠标光标让我们可以点击按钮(添加set show mouse cursor) 添加get player controller,来获取角色的控制 现在可以测试了。 如果开始游戏后,UI界面没有消失,那么,,,
打开start蓝图,在open level后添加一个remove from parent节点即可 现在来实现退出游戏的功能。 打开start蓝图,选中结束游戏的按钮,添加一个点击事件
添加quit game节点来结束游戏。 8 应用官方动画蓝图打开MyCharacter蓝图,选中左侧的mesh(inherited),在细节面板里的animation里将mode改为use animation blueprint,将class改为带ASP的那个。 现在测试,角色就可以有基本的动画了。 9 添加一个触发器动画复制一个静态网格物体cube,然后拖放到场景中。
拖放一个box trigger(盒式触发器)到视口 选中这个触发器,在细节面板中的Rendering下取消勾选Actor Hidden InGame 让这个触发器在游戏中可以看见。 打开关卡蓝图,选中视口中的触发器,右键添加一个触发开始事件(Add On Actor Begin Overlap) 同样地添加一个Add On Actor End Overlap触发结束事件。 选中cube,在细节面板中将移动属性改为Movable可移动的 现在选中视口中的cube,然后点击Cinematics中的Add Matinee添加一个动画蒙太奇。 选中cube,在Tracks面板中添加一个空组来存储cube的动画 在组下新建一个Track轨迹 拖动滑杆到2.00s,在视口中将cube移动到某个位置,然后在Matinee视图中按下回车键记录关键帧。 将绿色小箭头拖动到2.00s那里(绿色区域表示循环区域),将右边红色小箭头也拖动到2.00s那里(两个红色小箭头之间表示播放的区域) 关闭后可以看到生成了一个电影图标,这个就是创建的动画蒙太奇。 打开关卡蓝图,选中视口中的蒙太奇,添加一个引用 添加一个play节点来播放动画 添加一个reverse节点反响播放动画 10 设置角色的冲刺
打开角色蓝图,点击左侧的CharacterMovement(Inherited),在细节面板中查看最大步行速度 在Event Graph视图里,添加一个左shift事件 添加两个 set max walk speed,分别修改数据,一个加速速度和一个正常速度 添加一个get character movement节点(或者直接把左侧的charactermovement拖到是视图中)来获取移动速度的接口 11 给人物添加血条打开角色蓝图,添加一个float变量重命名为Health(血量),默认值设为100
(编译后可以设置默认值) 添加一个控件蓝图来显示血量 打开蓝图,从左侧拖动一个Progress Bar(进度条)到视图中 点击百分比后的Bind创建一个新的绑定函数,让这个百分比与角色的血量相关联 回到Event Graph里,将血条与角色血量相关联 添加一个Box Trigger到视口中,在细节面板中取消勾选 Rendering下的Actor Hidden In Game,让该组件在游戏中可见。
打开关卡蓝图,显示血条 选中刚创建的Box Trigger,让角色每次碰到这个组件血量就减少5 12 创建一个GameOver界面创建一个控件蓝图重命名为GameOver 从左侧拖拽一个text到视口,将文字内容更改为GameOver,颜色改为红色。 拖拽一个Button,然后再拖拽一个text到Button的下面,内容改为 回到主菜单 打开关卡蓝图,判断玩家的血量,如果血量为0,则触发GameOver界面。 记得显示鼠标光标,让玩家可以操作 现在打开GameOver蓝图,实现回到主菜单的功能
选中GameOver的Button,添加一个点击事件 13 为角色添加脚步声和粒子效果
因为我们使用的是官方的动画包,现在我们打开这个动画包的动画蓝图(一个带ASP的Anim Blueprint) 打开这个蓝图,打开AnimGraph 打开Locomotion,可以看到各种状态相互转换 双击Jog,打开行走的图表 双击BS_Jog,打开行走的动画 你可以看到一个绿色的点,点击这条线上白色的点,可以看到这是一个Jog_Fwd_Rifle动画片段 在动画浏览器里找到Jog_Fwd_Rifle这个文件,然后双击打开 让动画暂停播放,现在来添加效果 拖动下方红色的时间滑块到右脚着地的瞬间,然后在上方方格内的红线处右击添加一个粒子效果。 点击这个粒子效果,为它添加一个粒子效果,随自己喜欢就行。 依照这个方法,为这个动画片段里所有脚着地的瞬间添加粒子效果
添加一条轨迹来播放声音以免与粒子效果混淆
|