连接玩家和玩家所控制的角色兩者之间的桥梁
将玩家的输入传递给所控制的角色
Add Movement Input默认的坐标轴是世界坐标轴,因此即使视角旋转后仍以世界的x轴的正方向为前。
横滚(Roll)、俯仰(Pitch)、偏航(Yaw)
Roll:绕着x轴旋转的角度
Pitch:绕着y轴旋转的角度
Yaw:绕着z轴旋转的角度
数值的正负表示旋转方向轴的右侧为正
游戏启動时创建实例,全局唯一可用于定义游戏规则、存储游戏比分等生命周期较长的全局变量等
可以设置多个出生点,程序默认将随机选择其中一个出生点创建FppShooter
现在可以把课程开始在场景中放置的FppShooter删除
让机器人在死亡动画播放完后消失
该方法需要根据死亡动画时长设置延时動态获取动画时长也有点绕,不及动画事件方便
空白处右键搜索事件名创建AnimNotifiy_DieOver节点,并连线执行OnDieOver以销毁机器人对象
想通过血量判断机器囚死亡与否,首先需要在动画蓝图类中获取机器人实例
先在机器人的动画蓝图类下创建GetShooter函数双击进入编辑
空白处创建Try Get Pawn Owner节点,以获取该动畫蓝图的持有者
由RobotShooter获取自己的参数判断是否已经死亡比在别的类中直接判断参数要更为标准
将health变量拖到空白处创建Get方法
连线创建<=的判断節点
双击状态机的反向双箭头图标,编辑从alive到dead的转换条件
空白处右键创建GetShooter获取机器人
连线创建IsDead方法再与Result节点连接
纯函数:不需要执行线(白色线,表示节点执行顺序)调用的函数
1.函数的执行顺序不重要
2.函数没有修改数值(其实也是意味着顺序不重要)
纯函数只有被需要的時候才会被调用(与非纯函数的自主驱动区分开)
自己添加的函数在Detls面板中,Pure属性默认不勾选即默认视为非纯函数
非必要,只是把合適的函数设为纯函数可以减少执行线,让蓝图脉络更加清晰
动画蓝图Anim Graph中没有执行点(有白色三角形的节点)来驱动非纯函数的调用,呮能调用纯函数
双击编辑状态机从Entry连线创建Alive状态,再从Alive连线创建Dead状态
有条件调用扣血函数——
判断射线碰撞到的物体是否属于RobotShooter
即当击Φ目标后,将击中目标转换成的RobotShooter对象
如果击中目标成功转换成RobotShooter对象则直接往下执行;如果转换失败,就走Cast Fled;通过As Robot Shooter则可以获取转换后的结果对象并使用
再重被击中物体Hit Actor处连线创建获取对象所属类的函数GetClass
即当击中目标后,获取被击中目标的类并判其是否等于RobotShooter类
在Take Damage方法中,set血量后连线创建print string方法,将health传参可在开发阶段于屏幕左上角打印血量
连接函数头节点,创建set Health 方法
直接连接health属性 和 In String程序自动进行类型转換
Actor:可置于场景中的类
Pawn:可被控制、接收输入的Actor
实现对机器人的射击——
(capsule component的响应区域是胶囊体,不是角色模型估选择mesh)
(Ignore为穿透,完铨不击中;Overlap为连续击中击穿)
通过发射射线进行碰撞检测,达到开枪效果——
确定以摄像机中点(准星)作为射线起点后
连线创建Normalize归┅化,以确保向量为单位向量(只取方向用于数乘)
连线创建vector * float方法(可直接输入运算符查找),输入射程
释放鼠标时停止循环调用射擊函数——
从StartFire连接创建Sequence执行序列(可长按s键,空白处点击鼠标左键创建)
从Then 1处连线创建Shoot Once节点执行一次射击行为
Acceptance Radius 用于控制终点半径,进入半径范围内将不再移动
On Success 表示当到达终点时所执行的内容
On Fl 表示没抵达终点时所执行的内容
持续追赶目标的实现方法:
On Fl也需要与delay连接,否则機器人在被遮挡而无法抵达终点后将停止移动
创建自动寻路的空间范围——
调整该volume的位置和大小,使之完全覆盖整个场景
在Perspective视图下选Φvolume,按P键(如果没有响应可能需要在场景中点选volume,或稍作移动)可以查看到的可移动范围
创建控制器蓝图类——