虚幻引擎5中的发射物组件通常是用来模拟子弹,炮弹等物品当然任何东西都可以成为发射物。
我通常用的是发射物移动组件:
ProjectileMovement(发射物移动组件)支持受到影响后反弹或想目标前进等行为,通常拥有actor的根组件被移动,然而另一个组件可能被选中,如更新的组件正在模拟物理,只有初始速度为非零时将影响发射物,物理模拟就是在这个时候开始。
首先我们做一个简单的模拟子弹发射,首先在内容侧滑栏的空白区域新建一个actor类型的蓝图,名字就叫子弹,然后在里面创建一个球的静态网格体大小调小一点然后创建一个球形的球体碰撞,
所谓球体碰撞通常用于简单碰撞的球体.边界在编辑器中被渲染为线条,添加ProjectileMovement(发射物移动组件),最后将球形碰撞作为球形静态网格体的子类
在ProjectileMovement(发射物移动组件)中的细节栏中找到抛射物中的初始速度,调整到你预想到的速度。
在事件图表中调用函数事件命中,随后按通道进行球体追踪
将命中的位置同时设置为按通道进行球体追踪的开始与结束,在按通道进行球体追踪中Radius设置为5代表他追踪的大小范围,在Trace Channel需要我们自己自定义碰撞
在虚幻引擎上面编辑中打开项目设置,在引擎栏中找到碰撞
在Trace Channels中新建检测通道自定义命名后默认响应选择Block(阻挡)这样就设置好了
中断命中结果并且将Return Value拖到分支做判断是否命中在中断命中结果中将命中的actor拖出来做判断看看他是否有用标签,标签需要到你actor中的蓝图中打个比方
选中组件中最上面的actor在细节蓝中搜索tag在搜到的actor栏下面添加标签即可检测到
随后就可以根据你击中后获得的标签来做出对应的事件。
现在我们到我们控制的角色这里绑定一个输入为鼠标左键
单机鼠标左键之后我们根据玩家的视角向前射一条直线
首先获取玩家摄像机管理器,获取摄像机的位置作为按通道进行线条追踪的开始位置,随后获取摄像机旋转来确定他射出去的方向(玩家看向哪里就射哪里)随后获取向前向量乘以200000这是他射出去的距离然后与获取摄像机位置相加得出按通道进行线条追踪的end结尾,Trace Channel设为子弹命中
随后我们中断命中结果将命中的位置(location)和命中结束的位置(Trace End),在后面搞一个选择函数右键Index修改引脚类型为布尔将Location连为真Trace End连为False将Return Value连到寻找查看旋转中Target中
上面把我们要发射子弹对应的骨骼拖出来获取插槽变换将你要发射子弹的位置绑定骨骼这里我新建了一个插槽
复制这个名字输入到获取插槽变换的In Socket Name之中将他的Return Value Location分别连到寻找查看旋转和生成Actor中.
在按通道进行线条追踪之后右击空白地方输入从类生成Actor与他相连在其中的Class中选中我们之前创建的子弹他的名字就会变成生成Actor子弹,分别将获取插槽变换和寻找查看旋转连到生成Actor子弹的对应的位置即可。