欢迎光临散文网 会员登陆 & 注册

斯坦福UE4C++课程P7-P9玩法&物理碰撞

2022-10-23 22:33 作者:_Hide-on-bush_  | 我要投稿

本章主要讲了碰撞通道、对象类型、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即可。

效果如下:


斯坦福UE4C++课程P7-P9玩法&物理碰撞的评论 (共 条)

分享到微博请遵守国家法律