斯坦福UE4C++课程P7-P9玩法&物理碰撞
本章主要讲了碰撞通道、对象类型、Block Overlap Ignore。
这节我们先添加左右移动MoveRight和控制俯仰旋转LookUp的功能,并区分控制器/角色。
Controller.h是AI(AIController.h)和玩家(PlayerController.h)控制器头文件
拥有控制旋转功能(供相机使用),区别于Pawn的旋转
PlayerController.h每个玩家用一个,接受玩家输入
AIController.h每个AI用一个,控制Pawn运动的逻辑
之前的moveforward使用角色向前向量,我们改成使用控制器的向前向量,使得WS是和相机平行的。
同理修改moveright,我们更改如下:

目前已经为角色建立了基本的运动。下面建立魔法攻击动作
我们新建SMagicProjectile类(继承自Actor类)
新建蓝图类MagicProjectileBP继承前者

我们为攻击动作绑定键(动作映射Action Mappings)。
设置鼠标左键为攻击动作。
PrimaryAttack函数:生成弹球
现在点击鼠标左键角色中心会发射魔法球,这不太好,我们想要它从手中发出去
角色骨骼mesh中,muzzle是手部骨骼,在C++中获取它。
现在效果如下

设置魔法球movement comp的gravity scale为0,使其不受重力影响。
现在看到魔法球仍可穿透墙,这是因为物理碰撞效果受双方同时影响,设置好魔法球和墙的碰撞即可。
也可以在魔法球C++类中设置:
可在项目设置-collision-presets中新建名为Projectile的预设文件,直接供魔法球C++类使用。

下面创建一个爆炸桶蓝图类,魔法球打到上面会让它炸,爆炸施加范围内的冲量(用径向力组件实现)


效果如下:


作业中未完成的还有为跳跃绑定动作,用C++重新实现爆炸桶。
绑定跳跃:(Jump函数为Character类自带,不需自己实现),用空格键绑定。
C++实现爆炸桶:头文件添加两个组件,静态网格体和径向力组件(注意径向力组件设置为蓝图可读写),cpp文件设置参数
蓝图类继承爆炸桶,添加on component hit触发fire impulse即可。
效果如下:
