纯净函数:不会改变游戏状态
纯净函数:不会改变游戏状态
跨关卡保存时间
GameInstance
UI数据更新
1)基于变量
2)基于函数
UI系统设计
1)完成UI设计
2)在主角中完成实例创建并显示
create uesr interface
addToViewPort
用GameInstance来保存数据时,请一定记住需要在 Project setting中完成配置,指定用自定义的GameInstance来保存数据
map&modes
GameInstance:存放数据
Get All Actors of Class:统计某一类型的实例数
玩家进入指定区域时,触发EventActorBeginOverlap
玩家退出指定区域时,触发EventActorEndOverlap
Event Tick: 每帧调用
帧:一屏
针对旋转的插值
Rinterp()
FindLookAt Rotation:用于计算目标位置
InterlSpeed = 1 / Time
将实例数据更新到蓝图类
在场景中调整各类参数,选中实例的所有组件
Edit Blueprint
宏比函数强大
1)可以调整引脚顺序
2)支持多引脚输出(在output节点中完成增加)
3)可以复用,只能在当前蓝图
4)不能跨蓝图复用
******************************************
对于大家都想公用的,可以先建立蓝图宏库
******************************************
blueprint/Blueprint Macro Library
蓝图重用
函数定义(选中该选节点,右击,再选择collapse Function)
函数可以重用
子图不能被重用
虚幻对伤害的支持
Apply damage (触发伤害)
Event AnyDamage(伤害响应)
子弹发射效果
1)确定子弹初始位置和子弹飞行方向
使用Arrow组件
2)子弹飞行动画
Projectile Movement
在空白的蓝图工程里使用粒子系统
Add Component
ParticleSystem
获取场景中元素的信息
1)通过get函数获取,如GetActorLocation
2)用过对象获取,如PointLight
制作水晶飞向玩家的动画
1. 用Timeline节点定义动画持续的时间
update引脚触发水晶位置更新
2. 用lerp()函数完成插值
3.定义变量记录水晶的初始位置,以正确完成动画
《人之常情》
保存以前关卡的时间,在以前关卡时间上累加
interp speed=1/Time
每帧之间的间隔是delta
lerp的返回值是A~B之间的点和A~B本身,当返回值为0,则是A;返回值是1,则是B。
Time:0.75,value:1的意是:
在0.75s时,已经改变成B点所在(位置、大小)
为什么将Location变量放在判断体后而非event开始时:
避免了任何物体进入时都会记录位置的情况,减少冗余度,提高效率
Lerp:使A点到B点产生平滑的运动轨迹。