1,限制玩家行为
1.1冲刺时减少体力值
在FirstPersonCharacter蓝图中创建两个变量SprintCost定义为浮点型,默认值设置为0.1,InSprinting?定义为bool型
如下图连接,注意输入“Sprint Drain”
1.2使用循环计时器来重复动作并使用分支节点将动作模块化
找到之前做的冲刺功能sprint,增加以下连接
注意 在以函数名设置定时器(Set Timer by Function Name)的Function Name输入框区域输入“Sprint Drain”,将Time改成在0.5
在以函数名清除定时器(Clear Timer by Function Name)的Function Name输入框区域输入“Sprint Drain”
在设置计时器中的Set IsSprint?勾选,另一个不要勾选
添加调试节点(可以看按下左【shift】时Player Stamina的值是否持续减少)
1.3重新生成stamina
创建新浮点型变量重命名为Stamina Recharge Rate,默认值改为0.05
注意把Delay的Duration值改为1,min(float)值改为1
1.4当弹药耗尽时停止开火动作
找到注释为Spawn projectile,断开输入操作Fire节点与Montage Play(蒙太奇播放)节点
如图连接,分支True连接Montage Play(蒙太奇播放)
编译保存不要忘
2,创建可收集物品
2.1创建收集逻辑
在FirstPersonBP下添加新的蓝图类,父类选择Actor,重命名为AmmoPickup
进入蓝图类,选择静态网格体组件
在右下角视图选项勾选显示显示引擎内容和显示插件内容
在右侧静态网格体选择Shape_Pipe,材质选择M_Door,x,y,z都设置为0.5
左上角选中StaticMesh,点击添加组件Capsule Collision(某种类型的碰撞器),在细节调整大小
打开时间图表,创建新的int型变量重命名为Ammo Pickup Count(弹药补给)编译后修改默认值为15
之后如下图连接节点,播放位置处的音效中在Sound处选择资产CompileSuccess
拖拽两个到地面上,碰到后右上角子弹数会增加,而且会有音效
3,设置游戏胜利条件
3.1在HUD中显示目标
在FirstPersonCharacter创建一个类型为Integer(整数)重命名为TargetGoal,默认值设置为2
打开HUD的UMG在Goal Tracker下添加两个新的文本一个重命名为/文本为 / (注意前后加空格),另一个重命名为Target Goal,文本为0,选择Target Goal在其细节->内容->文本->新建绑定
如下图连接蓝图
3.2创建胜利菜单
在文件夹UI下创建高级资源->用户界面-->控制蓝图
创建两个按钮(Button)一个文本(Text),在两个按钮下分别创建一个文本,如图所示命名和更改文本,把You Win!字体大小改为72,Restart和Ouit文本的字体大小改为60,更改按钮大小
选中Restart按钮,在细节面板拉到底,点击点击时右面的+
如图连接蓝图,注意打开关卡(按名称)中更改Level Name,写入关卡名,可以在世界大纲图查看到关卡名
Quit按钮和上相同,如图连接蓝图
3.3显示菜单
打开FirstPersonCharacter创建一个自定义事件命名为End Game,如图连接蓝图,注意Set Game Paused的Paused勾选上,Create Widget中Class选择Win Menu
3.4触发胜利
打开CylinderTarget_Blueprint找到注释碰撞变色,两次bool判断击中,找到尾部,如下图连接蓝图