任务45:UI
1, 加入准星UI
User Interface --> Widget BluePrint
2. 把UI显示在界面上
GameMode的 BeginPlay方法中,创建UI界面,然后添加到视图上。
任务45:UI
1, 加入准星UI
User Interface --> Widget BluePrint
2. 把UI显示在界面上
GameMode的 BeginPlay方法中,创建UI界面,然后添加到视图上。
任务44:GameMode
1. GameMode 是什么?有什么用?
GameMode 用来记录游戏的规则,积分这些信息
比如跑酷,玩家的积分,角色可以有多个,积分只属于玩家,而不是和角色绑定。
2. 怎么设置GameMode生效?
World Setting 可以设置 GameMode Override选中自定义的GameMode
GameMode 中可以设置 Default Pawn Class 也就是 主角蓝图的类
任务43:动画事件
1. 机器人死亡了,就不在跟着移动
机器人死了,就让他不受控制器控制
DetachFromControllerPendingDestory
2. 隔一段时间让机器人消失
方案1:
SetTimerByFunctionName设置一个时间,调用DestoryActor让机器人消失
方案2:
因为上个方案,时间是写死的,如果动画时间变了就得改。更好的方案,动画播放完就给个通知,然后收到通知就让机器人消失。
在动画页面 AnimationSequence 动画片段中加入Add Notify 自定义一个通知
在动画蓝图中 接受这个通知 。然后调用销毁机器人的方法。
问题:
动画的通知,只能在动画蓝图里面才收的到吗?
是的
任务42:状态转换
机器人血量为0,函数范围死亡
死亡动画循环播放
死亡动画设置Loop Animation为否
任务41:纯函数
1. 什么是纯函数?
纯函数不需要执行线驱动
非纯函数需要执行性驱动
纯函数不修改任何数值
2. 什么是执行线?
执行线代表执行的顺序。因为纯函数不改变任何数值,只是展示数值,所以执行顺序不重要,可以不要执行线。只在被需要的时候调用。
3. 怎么创造纯函数?
函数设置里面Pure打上勾
4. 什么时候用纯函数?
没有执行点的时候,必须要用纯函数。
有限状态机里面没有执行点,只能用纯函数。
任务40:动画状态机
1. 动画蓝图增加有限动画状态机
Add New State Machine
任务39:有限状态机
1. 什么是有限状态机?
FSM:有限状态,状态切换,切换有条件
灯泡机制就是个有限状态机
任务38:类型判断
1. 怎么让机器人掉血?
射线检测击中会返回一个结果,将该结果中的Hit Actor字段转换成机器人。
CastToRobotShooter
调用机器人的 TakeDamage方法就可以实现机器人掉血的操作。
GetClass可以获得对象的类,类和类可以比较
37 机器人受伤
快捷键
先按B,再按鼠标左键,生成Branch节点
先按S,再按鼠标左键,生成Sequence节点
1. 击中的物体是不是机器人?
虚幻四中的常见类
Actor 可以放在世界关卡中的类
Pawn 可以被控制的Actor,可以接受鼠标,键盘这些Input控制
Character: 可以运动的Pawn ,可以使用Movement函数,可以跑跳飞行
Controller 没有物理表现的Actor,用来控制Pawn
射中机器人
1. 机器人对射线无响应?
射线击中机器人,无响应。需要改变Mesh对于摄像的响应。
SetCollisionResponseToChannel 将激光所在的Visiblity这种类型设置为Block
如果想对胶囊体设置就把Mesh改成胶囊体
射击功能实现
1. 如何确定射击打到,没达到?
LineTraceByChannel 射线检测
起点: 摄像头位置
方向:GetControlRotation-->GetForwardVector-->Normalize
向量的数乘 就是向量的缩放
2. 连续射击
SetTimerByFunction
3. 关闭射击
ClearTimerByFucntionName
射击
Sequence 先做0,再做1,动作序列
SetTimeByFunctionName 每个多长时间,做某个动作
机器人动作
BlendSpace
机器人自动寻路
1. 划定寻路的范围
Volumes 中找到 Nav Mesh Bounds Volume, 将这个组件拖入场景中
调整该组件的范围和大小,直到覆盖需要的范围。
选中该组件,按下P。
绿色的范围就可以寻路的范围。
2. 基于AI Controller 创造一个Controller,用来控制机器人运动
AI Move To 只能在AI Controller 使用,作用控制移动。
3. 将 AI Controller 和 机器人绑定
机器人蓝图中的AI Controller 设置为新创建的Controller
问题:机器人移动的时候没有动画,直接飘过来了。
敌人机器人
什么是函数?
函数做个黑箱,不用关心细节
什么是变量?
变量是存储的地方,是个仓库。想用了就去里面取,不用了就存在里面。
产生特效:
1. 特效释放的位置
使用一个箭头辅助,在武器骨骼模型的下面加个Arrow,调整位置。
2. 创建特效
Spawn Emitter Attached
Attach to Component设置为刚加上的箭头Arrow
播放蒙太奇动画
1. 绑定 输入事件
2.动画蓝图里加个Slot
在动画文件中,增加一个 Slot,只有加了这个蒙太奇动画才有可以生效的位置。
3. 触发蒙太奇
Play Anim Montage 选中相应的蒙太奇文件