关于碰撞模块
如果发现粒子每次碰撞到地面上 都会进行重新模拟的情况
是因为Sub Emitter的粒子系统里面的Event Handler接收器里面的Execution Mode没有从Every Particle改成Spawned Particles
所以每次碰撞都会在碰撞位置重新模拟一次粒子生成 谨记!
愿光明与我们同在!共勉!
关于碰撞模块
如果发现粒子每次碰撞到地面上 都会进行重新模拟的情况
是因为Sub Emitter的粒子系统里面的Event Handler接收器里面的Execution Mode没有从Every Particle改成Spawned Particles
所以每次碰撞都会在碰撞位置重新模拟一次粒子生成 谨记!
愿光明与我们同在!共勉!
非Tick函数获得DeltaTime:GetWorld()->GetDeltaSeconds();
如果出现在蓝图中找不到Cast to MyData这个函数,说明没有在MyData的UCLASS里加上Blueprintable
这里有点小bug,就是更新背部武器显示这里,序列第一条Then0执行的逻辑,需要将这个for each loop节点更换为for each loop with break,不更改的话会导致在装备背包之后,收回武器,再装备防弹衣,武器在背部的位置错误。这里只需要当is Equip Backpack这个布尔值为true,那么就直接连接break,结束这个循环。这里的作用就是,只要检查出装备数组里面有背包,则直接结束循环,从而保证装备背包变量一直为true,当数组中没有背包时,这个逻辑也是可以正常执行的。
ForEachLoop只要检测到头盔,并且同时满足两个条件,就设置头发不可见,但是循环体依旧还在执行,用ForEachLoopWithBreak节点,满足条件终止循环,可以节省循环的性能开销
摄像机相关移动:
左键+拖动:前后移动或左右旋转视口
右键+拖动:旋转视口,不前后移动
在键+右键+拖动:上下移动视口
Ctrl+Alt+点击并拖动:创建方形选择框
右键+WASD:类似于第一人称方式自由导航
Actor相关移动:
F:视口聚集到选中的Actor
Alt+左键+拖动:围绕目标旋转视口
Alt+右键+拖动:让摄像机接近或远离目标
Alt+中键+拖动:让摄像机向左右上下移动
常用的Events
Event Actor Begin Overlap:两个 Actor 的碰撞开始重叠时执行。
需满足条件:
Event Actor End Overlap:两个 Actor 的碰撞停止重叠时执行。
1.创建GameMode的蓝图类
2.在蓝图类中将Default Pawn Class设置为自己创建的Pawn类
3.在当前世界的WorldSetting中将Game Mode设置为自己创建的GameMode类
4.设置玩家,Auto Possess Player
4.1在蓝图中设置,在自建的Pawn蓝图类中的Auto Possess Player中选择Player0
4.2在自建的Pawn类C++代码中设置,AutoPossessPlayer = EAutoReceiveInput::Player0;
player0玩家0代表本机玩家,选择玩家,在细节面板中的pawn中把自动控制玩家(Auto Possess Player)改为玩家0(player0)就能控制主角了
移动节点:右键搜索 movement、移动。选择输入下的添加移动输入(可以控制角色移动功能)
添加移动输入:目标不指定时,默认是当前蓝图类;world direction,控制角色的旋转
常用的Events
Keyboard Events:接收键盘输入时执行。
需满足条件:
可以接受输入(Enable Input)。
Custon Events:自定义事件,可以在蓝图序列的任何地方处调用这些事件。
蓝图类通信关卡蓝图:使用执行控制台命令节点(等同与~)
F8:弹出控制
End键贴地,对象落地
项目设置里加载自己创建的游戏模式
Print String:打印字符串
蓝图类调用UI只能通过ger all widge去huo'qu
按键映射
1.1打开项目设置—Input
1.2添加轴映射(Axis Mappings)
1.3在自建的Pawn类中写事件函数MoveForward、MoveRight
1.4在代码中绑定映射:PlayerInputComponent->BindAxis(TEXT("MoveForward"), this, &AMyPawn::MoveForward);
PlayerInputComponent->BindAxis(TEXT("MoveRight"), this, &AMyPawn::MoveRight);
小球旋转:添加扭矩(Add Torque in Radians),勾选Accel Change(忽略质量),设置线性阻尼和角阻尼(阻力,摩擦力)
向X方向滚动,施加Y方向的力矩(反之)
主角弹簧臂旋转类型调整为世界,关闭进行碰撞测试(Do Collision Test)
transform:location、rotation、scale三合一
可以通过break分开
也是需要命令行,参数的话在函数后面空格然后加参数
课时8:vs的激活以及虚幻商城的介绍