UE5学习记录:蓝图编程,第一个游戏

发布于:2022-12-11 ⋅ 阅读:(789) ⋅ 点赞:(0)

惯例,首先感谢油管主Unreal Sensei的视频教程,以及感谢好猫字幕组的翻译,国内教程视频发布在教程第二弹
该教程采用了相当模块化的设计,所以描述起来可能会比较混乱

靶子

创建靶子蓝图

创建蓝图类,选择Actor类作为父类,拖入静态网格体,调整靶子模型,在蓝图中点击靶子,在右侧细节面板下滑,找到下方的事件栏,创建一个被击中时事件,用来作为被击中后一系列行为的起点。创建一个整形变量Score,为靶子添加受击事件,当被命中时令Score自增,此时存在一个很明显的BUG,任何物理对象碰撞到靶子都会增加分数,此时可以通过一个强制类型转换判断击中靶子的是否是目标的子弹,也就是被发射的那个小球,另外还存在一个BUG,当一个靶子被多次集中时可以连续增加分数,为靶子创建一个bool类型变量来判断这个靶子是否已经被击中过,如果已被击中则不提供分数,被击中增加分数的同时将bool类型变量变为真。
下方显示的是靶子的一部分蓝图,,此后会为靶子添加物理效果以及击中时的击退效果
靶子的蓝图

编辑游戏模式

创建一个蓝图类,选择Game mode base,将默认的pawn calss 设置为第一人称模式并在世界设置中将游戏模式覆盖设置为我们刚刚创建的那个。此时最好添加一个HDU,但新版本的UE5已经不再自带第一人称HDU,此处我选择了一个取巧的办法,在后面我们需要创建一个用户界面既WBG_UI用来在屏幕左上角显示得分,以及在屏幕右上角显示剩余的时间,因此我在对应的位置添加了一个+用作临时的准星
WBG_UI
在自定的游戏模式中,创建一个变量时间,同时记录开始的时间用作失败判定,并且添加当前分数和靶子的总数用作胜利判定,通过Get All Actor of
Class 获取当前地图中被调用的靶子数量,当分数与靶子总数相同时,判定游戏胜利。
在游戏模式中定义一个自定义事件ScoreAdd,用来增加分数,并在靶子蓝图中的最后调用该事件,以此实现分数的增加。
ScoreAdd

定时器模块

每秒循环,对输入的数值进行一次自减,并判定当前时间是否已经小于等于0,用以结束游戏。
在这里插入图片描述

游戏结束

通过Branch判断是否符合游戏结束的条件,当条件符合是弹出游戏结束界面,定义一个bool类型变量用来判断胜利或失败,实现用户界面的不同输出。并且设置一个按钮用来重开游戏。当游戏结束时,重置用户的输入,并且锁定所有输入指令,防止游戏结束后人物模型依然保持移动,导致摄像机出现在奇怪的位置。
WBG_END

最终场景

复活点向外看
内部场景
一个引导玩家向外看的靶子
此处需要注意,太阳神殿场景的物理碰撞和看起来的状态并不符合。需要手动进入资产管理将模型的碰撞预设由默认改为将复杂多碰撞转为简单碰撞。另外,在项目间迁移资产时,会出现控制器失效的情况,此时打开设置->项目设置->引擎->输入手动修改操作映射和轴映射,并且打开角色蓝图,重新引入移动节点,便可以修复这个问题.

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到