抛物线基本逻辑的参考与第一人称版
UE中实现投掷物品的抛物线(第一人称) - 哔哩哔哩以及参考视频
UE4手雷等抛物线_哔哩哔哩_bilibili本人新手请大家多多担待,有问题大家帮忙指出来,
创建抛物线自定义事件时先创建这几个变量和场景组件
初始位置(X:0.0,Y:0.0,Z:0.0)
最高位置(X:0.0,Y:0.0,Z:0.0)
初始速度(X:500.0,Y:0.0,Z:500.0)
箭头组件(位置可以自己放)
- 创建抛物线自定义事件
- 设置抛物线初始位置
先获取箭头组件的场景位置再加上返回旋转体B所旋转的向量A的结果等于初始位置(A的X:100.0,Y:0.0,Z:-10.0为第一人称中枪口的变量,B为箭头组件的场景旋转)(这里设置完之后抛物线的起点就是这个位置)
- 设置抛物线的最高位置
先获取箭头组件的场景旋转再加上前面获取初始位置的结果创建变换再变换方向,方向为初始的速度。(利用所提供的变换来变换方向向量)(这里就是抛物线的最高点)
- 绘制抛物线的基本原理
先创建一个函数在输入和输出中添加以下几个变量
输入
初始位置(X:0.0,Y:0.0,Z:0.0)
最高位置(X:0.0,Y:0.0,Z:0.0)
重力(X:0.0,Y:0.0,Z:-980.0)(这里的z轴的数值就是抛物线到地面的长度)
Time 01(0.0)
Time 02(0.0)
输出
Location 01(X:0.0,Y:0.0,Z:0.0)
Location 02(X:0.0,Y:0.0,Z:0.0)
4.1获得抛物线上的任意两点
公式为:0.5timetime重力+time最高位置向量+初始向量 (根据time01,time02获得location01,location02)
Time*Time*0.5*-980+初始位置+(最高位置*Time)=Location(重力为-980是因为正数抛物线是向上的,负数才是向下的)
(这里time乘于time乘于0.5就等于二分之x的平方,乘于-980使抛物线方向向下,初始位置为a,最高位置乘于time就是0.05b(这里的time就是后面乘于的0.05)最后等于Location的位置,这里简化完就是一个抛物线公式)
4.2For循环后来绘制抛物线
使用for循环调用函数100次Index连接time的输入
time01=index0.05,连接到time01
time02=(index+1)0.05,连接到time02
把写的函数拖出来将事件图表的变量初始位置最高位置连接到函数的相同变量重量为(X:0.0,Y:0.0,Z:-980.0)
然后连接“由通道检测线条”来绘制线条, 其中draw debug type 设置成针对一帧 否则屏幕里会出现好多条抛物线。
首先优化一下算法 “由通道检测线条”还会返回一个是否检测到碰撞的bool值 当我们检测到bool时 就没必要继续循环下去了。
我们新建一个事件 命名为break 连接上for循环的break 当碰撞发生时 触发break事件跳出当前循环节约资源 。(这里的逻辑就是先获取抛物线的任意两点再由for循环100次这样抛物线上的基本点都有了后面连接由通道检测线条就是把点连接成线形成一个抛物线)
整体蓝图
标签:Time,第三人称,0.0,位置,抛物线,time,UE4,初始 From: https://blog.csdn.net/fengwuliuxi/article/details/143640099