1 导入素材
将人物模型和骨骼导入(直接将fps拖进去,选择正确的骨骼即可)
将枪支模型导入,取消创建骨骼,将静态网格体导入其中
2创建角色蓝图,也就是我们玩家控制的对象
然后在角色的组件中找到网格体并使用相应资产,将网格体调整到和胶囊体相匹配,正对方向与箭头组件方向一致
添加摄像机组件,找到骨骼网格体的头部,并在该骨头处设置一个插槽,改名为摄像机
然后在网格体的子级中添加摄像机,并在其插槽处设置为摄像机,注意摄像机的旋转和正对方向
3关于增强输入系统
就是ue5新出的输入系统,可以简易完成许多按键触发的操作
通过创建输入和映射资产,即可在角色蓝图中完成对他的控制,首先创建出需要进行的操作的对应输入和映射
然后在角色蓝图中添加增强输入系统
根据跳跃移动看的性质,将其分别设置为布尔,2d,2d,并在映射中分别添加
在角色蓝图中添加跳跃事件,其中左侧代表着按下该按键的状态
然后是移动,首先在映射中添加修改器
拌合输入轴值即是将1d的数据映射到2d,使其能进行前后移动
否定就是将值变为负值
然后是镜头的移动,其中需要将摄像机中的pawn控制旋转勾上
修改器部分
盲区就是将设置的值重映射到0到1中,超出范围的值会被限制
4 给人物移动添加动画
导入相应的动画素材,创建一个动画蓝图和一个混合空间
混合空间可以根据两个值对动画进行混合,所以我们将其设置为水平速度和前进速度,因为移动可以理解为二维平面的运动,同时角色的最大速度为600.因此如图设置,并把相应的动画资产导入
然后在动画蓝图中获得人物速度即可
5 给模型添加枪支(由于我没有相应的动画,所以就大概做一下)
把ak放置在摄像机的下面即可
然后创建出一个武器图表,和开火的输入,当开火时播放音效,同时设置布尔变量为循环做准备
6 武器子弹发射以及射线检测
首先打开项目设置,在碰撞处添加检测通道命名为弹道,默认响应为block,即会相互阻挡,并且检测
然后在武器蓝图中添加如下节点
由通道进行射线检测:根据创建的通道进行射线检测
由摄像机中心开始,向前的向量乘以射程(3000)加上摄像机的位置为终点(向量的叠加)进行检测
对draw debug type进行选择,可以看到检测射线
7 利用摄像机晃动模拟武器后坐力
创建一个camerashake蓝图类,修改其数值,然后在武器蓝图中添加
8 武器准星添加(简易准星)
创建一个控件蓝图,事件开始时将其添加在视口当中
控件蓝图中,添加一个画布面板和一个按钮,将按钮的锚点居中,修改偏移量和大小即可获得剧中的白色正方准星
然后在人物蓝图中将其添加到视口当中即可
9 将人物进行视角限制
yaw控制左右,pitch控制上下,当视角向上看时直接通过,当视角向下时,若摄像机的向下偏移超过30,则不再向下偏移
10 利用摄像机晃动模拟人物移动晃动
创建自定义事件和走,跑的相应的摄像机晃动,根据增强输入得到shift加速功能
然后在eventbeginplay添加该自定义事件
11 ai基本设置
创建一个pawn,并添加一个网格,将其最大移动速度修改为100
修改网格的碰撞响应,使弹道能够与其互相阻挡,这样子弹就可以对齐造成伤害,同时启用碰撞,方便物理模拟
在人物的武器图表中,调用以下节点(apply damage),即可对碰撞的actor造成伤害
在ai中,event anydamage 受到任何伤害时,调用该事件,减少ai血量
tick:每帧调用,当ai血量小于0时,打开mesh的物理模拟,延迟3秒destroy
12 ai 自动追踪玩家并攻击
首先导入相应的动画资源,创建相应的动画蓝图
具体逻辑是:静止时站立,移动时播放移动动画,攻击时播放攻击动画,死亡时播放死亡动画
然后是在场景中添加导航网格体边界体积(按p显示导航范围)
在ai中如图所示,对人物和ai的动画蓝图进行通信,并将其提升为变量
该逻辑为,血量低于0时,将动画蓝图中的死亡为真,播放死亡动画并3秒后销毁actor,以及追踪, 变量为真是调用aicontroller,(self)移动到角色的位置(simple movetoactor)
在ai中加入boxcollesion,该逻辑为,与角色重叠时,停止追踪,造成伤害,延迟1.5s继续造成伤害,将攻击设置为真,离开时进行追踪,将攻击设置为假
在人物中有,敌人可对人物造成攻击
其中需要注意的是,导航网格体需要嵌入地面,超过 ai
碰撞包括查询(检测)和物理,胶囊体和mesh都需要设置好,将ai对象类型设置为敌人,box对玩家碰撞响应设置为重叠
13 人物替换和走到指定位置追踪
骨骼相同的人物可以进行互相替换,导入人物,指定到相同的骨骼之后,即可在mesh中进行替换
指定位置追踪:
复制一个ai,将追踪攻击默认值设置为假,创建一个蓝图类,加入boxcollesion,同时box碰撞修改为可重叠,当人物走到该box范围内时,ai1会追踪人物
14 弹药拾取和消耗
首先在人物中创建浮点数变量子弹数,当子弹数<0时,不能开枪
然后创建子弹和对应的box,完成以下逻辑
在准星ui中,使子弹数量显示在面板上,创建一个文本,将锚点设置为右下角,并进行设置
在文本的地方创建绑定,使人物子弹数量返回到文本上
15 创建简单推拉门
首先通过几何体工具,创建出指定的静态网格体,将碰撞预设设置为将复杂碰撞应用为简单碰撞
创建一个actor,添加一个box,将默认位置设置为000,浮点值设置为0到1
play就是进行轨道,reverse就是反过来播放一遍
16 电梯制作:
制作一个按键开门上下的电梯
首先创建一个蓝图类,利用建模布尔工具,创建一个中空的盒体,把上面创建的门一起放入蓝图,添加两个盒体,一个用来开门,一个用来上楼
逻辑,relative location需要特别注意摆放时电梯放置的位置,按e上升,按f下降
这里,设置一个门相对位置的变量,将位置赋值给它进行操作即可
17 血量显示和游戏结束(死亡画面)
我们要创建的效果有,开始游戏时进行淡入,死亡时播放死亡动画,空格重启关卡淡出
首先创建淡入淡出控件蓝图,淡出就是淡入反过来
然后创建死亡画面控件蓝图,同时在设计器中写入,创建即播放死亡动画注意背景模糊
创建摄像机晃动,值都写大一点
然后在人物中按照逻辑这样写
游戏开始时,播放淡出动画
每帧调用,人物血量小于0时,(do once)创建死亡画面组件, 禁止输入,销毁ak,开始摄像机晃动
每帧调用,was input key just pressed & 血量小于等于0时(do once)播放淡入动画,延迟1.2s后,get current level name 接上 open level(by name)
同时,其中需要注意的节点:remove all widget (死亡时消除面板的准星等)
消除的bug:ai死亡时,立马停止造成伤害
在准星蓝图中,将血量进行绑定,即可显示人物生命值
18 子弹痕迹
创建一个延迟贴花材质
然后在武器图表中进行添加
在击中点生成贴花
rotation from x vector
make rot from x
设置物体rotation的时候,由向量差得到x轴的朝向,无论物体怎么移动,这个物体的x轴的朝向始终是这个向量差,可以得到一个物体始终朝向另一个物体,设置贴花即是,朝向法线所指的方向
19 血条制作,换弹计算
在准星控件蓝图中增加进度条等,对进度条修剪等可以进行设计
同时,对进度条百分比进行绑定
在人物蓝图中创建枪中子弹和备用子弹数,创建R键进行换弹,以下是换弹逻辑
同时,子弹逻辑也要进行相应修改
20 通过设置标签,得到打在不同actor贴花不同的设置
不知道咋回事一直报错,有好方法还是不用这个
在细节面板处搜索tag,在actor下添加相应的标签
然后在弹道检测的位置写
21 esc游戏状态面板
进行模拟时,需要点击shift+esc
创建一个控件蓝图
然后在逻辑中
注意:remove from paraent(清除当前ui) set input mode game only ,set input mode ui only
通过get player controller 获取显示鼠标
然后就是主菜单ui
逻辑
22 通关平台,和通关简单判定
一个平台加一个box(注意碰撞),然后加一个branch,当变量and为真时,通关
通关ui
通关蓝图通信,杀死敌人和捡拾子弹时,设置其布尔,即可
(plus :get all actors of class & get get all widgets of class)
23 枪口火焰添加
首先在ak枪口处添加一个插槽,对插槽进行位移旋转和缩放
然后将粒子系统拖入ak的子级,并将其添加到插槽中,注意要先把默认的位置旋转等都归零
位置设置好后,在粒子系统中,将自动启用关闭,在逻辑中开枪启用,收枪禁用(reset 或 deactivate)
24 节点
Finterp To:f插值到,从现在值到目标值,delta time:前进一个值的时间 speed:一个时间前进的值
Finterp to Constant:以常值进行插值,没有平缓的感觉
可重新触发的delay,如果被重新触发,则重新延迟
25 背包系统
简易背包系统,仅显示作用
首先创建背包ui:在滚动框中进行以下设置,标红的边界框是右键滚动框包裹得到的,对文本等的填充进行设置,对包裹的边框进行alpha值设置,ui中还能包裹其他的ui等
逻辑上,在ui中绑定子弹数量
使用b键打开背包,在开火键处,设置鼠标是否显示的判定
26 过场动画创建
就是创建一个cinecamera和一个场景,创建一段sequence,然后在蓝图中播放即可
没了,只是一个笔记,我会的我就不记了