首页 > 其他分享 >【UE4】基于蓝图的抛物线的基本逻辑(第三人称)

【UE4】基于蓝图的抛物线的基本逻辑(第三人称)

时间:2024-11-10 09:45:32浏览次数:3  
标签:Time 第三人称 0.0 位置 抛物线 time UE4 初始

抛物线基本逻辑的参考与第一人称版

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)

箭头组件(位置可以自己放)

  1. 创建抛物线自定义事件
  2. 设置抛物线初始位置

先获取箭头组件的场景位置再加上返回旋转体B所旋转的向量A的结果等于初始位置(A的X:100.0,Y:0.0,Z:-10.0为第一人称中枪口的变量,B为箭头组件的场景旋转)(这里设置完之后抛物线的起点就是这个位置)

  1. 设置抛物线的最高位置

先获取箭头组件的场景旋转再加上前面获取初始位置的结果创建变换再变换方向,方向为初始的速度。(利用所提供的变换来变换方向向量)(这里就是抛物线的最高点)

  1. 绘制抛物线的基本原理

先创建一个函数在输入和输出中添加以下几个变量

输入

初始位置(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

相关文章

  • 【UE4】基于蓝图拖拽物品的基本逻辑
    整体效果是基于获取玩家的鼠标位置到场景里的位置再tick就不会出现拖拽卡顿会很丝滑本人新手请大家多多担待,有问题大家帮忙指出来先创建拖拽物品的Actor(可以命名为Bp_Box01),再创建放置物品的位置(Bp_Box02)。放置物体在Bp_Box01中放置一个正方体,再在Bp_Box02中放置正方体和......
  • 【UE4】基于蓝图的更换弹夹的基本逻辑
    创建更换子弹前需要创建的变量均为整数变量。总备弹=180弹夹内剩余的子弹=30弹夹内子弹的总量=301.创建事件更换弹夹2.首先需要判断更换弹夹的条件,在满足什么条件下才可以更换弹夹。2.1更换弹夹的第一个条件必须是总备弹大于等于0的时候,只有在总备弹大于等于0的时候才有......
  • ue4资产序列化从入门到精通: 第一章 初识序列化
    一、写作目的:(全文字数4926,阅读大约需25min)首先,我有一个相关的需求要做,然后在拜读了网络上各大UE4序列化解析的文章后,发现大都讲的很模糊,对新入序列化大门的小白非常不友好。有的直接贴上一大段代码(好似直接糊脸上的不解释连招),也有的讲着讲着嘎然而止,也有的总是讲一些空洞的理......
  • UE4.22.2和UE4.22.3的区别是什么
    UE4.22.2和UE4.22.3版本之间的主要区别包括:1.性能优化;2.新功能的加入;3.现有功能的改进;4.错误修复;5.兼容性更新。具体来说,UE4.22.3引入了针对特定硬件和软件环境的性能提升,新增了若干工具和插件以扩展开发者的创作能力,对现有的编辑器功能和游戏引擎组件进行了优化,修复了在UE4.22.2......
  • ue4.26 niagara collisionNormal问题
    目的是让粒子片自由下落,与表面碰撞后停止并调整为与表面一致的朝向。测试用例搭建如下:1,建一个niageraSystem,直接用Fountain模板。2,确认EmitterProperties中SimTarget是CPUSim(出于兼容性考虑)2,在SolveForcesandVelocity前添加Collsion模块(CPU碰撞)。3,将Collision中的Fricti......
  • UE4.26 Emissive Decal(发光贴花)模拟Light Function
    【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!主要是想用EmissiveDecal(发光贴花)来模拟出SpotLight的LightFunction效果。原因是SpotLight的LightFunction依赖于阴影,而SpotLight开阴影比较费,且U......
  • 【Unity精品源码】JU TPS 3 – 完整的第三人称射击游戏模板
    ......
  • UE4获取玩家视角相机的位置和朝向
    游戏线程(GameThread)编辑器中(EWorldType::Editor,模拟运行或编辑状态)boolGetObserverView(FVector&Location,FRotator&Rotation)const{//WeareintheSIE(SimulateInEditor)if(GEditor->bIsSimulatingInEditor//classUEditorEngine*GEditor......
  • UE4(5)逆向学习笔记(三)——UEDumper源码学习
    目录0.前言1.准备2.开始阅读2.1设置版本和Offset2.2获取GName2.3使用GName2.4获取GUObjectArray2.5使用GUObjectArray2.6寻找dump主流程2.6.1ObjectsManager::copyGObjectPtrs2.6.2ObjectsManager::copyUBigObjects2.6.3EngineCore::cacheFNames2.6.4EngineCo......
  • 抛物线绘制 代码 ForceMode.VelocityChange,这种模式,忽略质量变化的影响 , 质量默认为1
    publicLineRenderer线渲染器;publicVector3[]线的点们=newVector3[60];publicTransform发射点;publicfloat力度=10;publicfloat细分长度=.02f;publicGameObject子弹;voidUpdate(){for(intfFor=0;fFor<线的点们.Length;f......