基于UGameplayStatics

Blueprint_PredictProjectilePath_ByObjectType

  • 根据 Object Type,算出抛物线的点集合和检测结果

    static bool Blueprint_PredictProjectilePath_ByObjectType(
    const UObject* WorldContextObject,
    FHitResult& OutHit,
    TArray<FVector>& OutPathPositions,
    FVector& OutLastTraceDestination,
    FVector StartPos,
    FVector LaunchVelocity,
    bool bTracePath,
    float ProjectileRadius,
    const TArray<TEnumAsByte<EObjectTypeQuery> >& ObjectTypes,
    bool bTraceComplex,
    const TArray<AActor*>& ActorsToIgnore,
    EDrawDebugTrace::Type DrawDebugType,
    float DrawDebugTime,
    float SimFrequency = 15.f,
    float MaxSimTime = 2.f,
    float OverrideGravityZ = 0
    );
  • 代码实现

    FVector BeginLoc = GetActorLocation();
    FVector LaunchVelocity = GetActorForwardVector() * 1000.0f;
    TArray<TEnumAsByte<EObjectTypeQuery> > ObjectTypes;
    ObjectTypes.Add(EObjectTypeQuery::ObjectTypeQuery1);
    TArray<AActor*> IgnoreActors; FHitResult HitResult;
    TArray<FVector> OutPatnPositions;
    FVector OutLastTraceDestination; //开始模拟
    bool bIsHit = UGameplayStatics::Blueprint_PredictProjectilePath_ByObjectType(
    GetWorld(),
    HitResult,
    OutPatnPositions,
    OutLastTraceDestination,
    BeginLoc,
    LaunchVelocity,
    true,
    0.0f,
    ObjectTypes,
    false,
    IgnoreActors,
    EDrawDebugTrace::ForDuration,
    0.0f
    );
    if (bIsHit)
    {
    UKismetSystemLibrary::PrintString(GetWorld(), HitResult.GetActor()->GetName());
    }

Blueprint_PredictProjectilePath_ByTraceChannel

  • 根据 ChannelChannel,算出抛物线的点集合和检测结果

    static bool Blueprint_PredictProjectilePath_ByTraceChannel(
    const UObject* WorldContextObject,
    FHitResult& OutHit,
    TArray<FVector>& OutPathPositions,
    FVector& OutLastTraceDestination,
    FVector StartPos,
    FVector LaunchVelocity,
    bool bTracePath,
    float ProjectileRadius,
    TEnumAsByte<ECollisionChannel> TraceChannel,
    bool bTraceComplex,
    const TArray<AActor*>& ActorsToIgnore,
    EDrawDebugTrace::Type DrawDebugType,
    float DrawDebugTime,
    float SimFrequency = 15.f,
    float MaxSimTime = 2.f,
    float OverrideGravityZ = 0
    );

PredictProjectilePath

  • 根据预测参数,推算结果

    /**
    * Predict the arc of a virtual projectile affected by gravity with collision checks along the arc.
    * Returns true if it hit something.
    *
    * @param PredictParams Input params to the trace (start location, velocity, time to simulate, etc).
    * @param PredictResult Output result of the trace (Hit result, array of location/velocity/times for each trace step, etc).
    * @return True if hit something along the path (if tracing with collision).
    */ static bool PredictProjectilePath(
    const UObject* WorldContextObject,
    const FPredictProjectilePathParams& PredictParams,
    FPredictProjectilePathResult& PredictResult
    );

Blueprint_PredictProjectilePath_Advanced

  • 根据预测参数,推算结果

    static bool Blueprint_PredictProjectilePath_Advanced(
    const UObject* WorldContextObject,
    const FPredictProjectilePathParams& PredictParams,
    FPredictProjectilePathResult& PredictResult
    );

BlueprintSuggestProjectileVelocity

  • 根据目标点,反算初速度

    static bool BlueprintSuggestProjectileVelocity(
    const UObject* WorldContextObject,
    FVector& TossVelocity,
    FVector StartLocation,
    FVector EndLocation,
    float LaunchSpeed,
    float OverrideGravityZ,
    ESuggestProjVelocityTraceOption::Type TraceOption,
    float CollisionRadius,
    bool bFavorHighArc,
    bool bDrawDebug
    );

SuggestProjectileVelocity_CustomArc

  • 根据目标点,反算初速度

    static bool SuggestProjectileVelocity_CustomArc(
    const UObject* WorldContextObject,
    FVector& OutLaunchVelocity,
    FVector StartPos,
    FVector EndPos,
    float OverrideGravityZ = 0,
    float ArcParam = 0.5f
    );

【UE4 C++】抛物线路径、发射轨道相关的更多相关文章

  1. /etc/profile 路径出错后相关的命令失效解决方式

    关于 Linux 的配置文件 /etc/profile 路径出错后相关的命令失效解决方式(如:ls,vi不能用) 今天学习LINUX 下配置jdk 和安装tomcat 通过VI编辑/etc/profi ...

  2. UE4 Android相对路径转绝对路径方法笔记

    在windows端用FPaths::ConvertRelativePathToFull可以将相对路径转成绝对路径. 在Andoird端,就麻烦些.可模仿UE4源码中AndroidFile.Cpp转换相 ...

  3. 卫星轨道相关笔记SGP4

    由卫星历书确定卫星轨道状态向量 卫星历书的表示方法有2种: TLE(Two Line Element),和轨道根数表示方法 由卫星历书计算出卫星轨道状态向量的方法有2种: SGP方法,NORAD的方法 ...

  4. 11g直接路径读、相关参数、10949事件介绍

    转载自刘向兵老师:http://www.askmaclean.com/archives/11g-direct-path-read-10949-_small_table_threshold-_seria ...

  5. PHP中文件类型 文件属性 路径以及 文件相关的函数

    一: 文件类型判断: 1.is_dir()  判断是不是目录 2.is_file() 判断是不是文件 3.is_executable() 判断是不是可执行文件 4.is_readable()  判断是 ...

  6. .md图片链接转存并替换路径,及相关报错解决方法

    最初我想把Typora中.md文件中的web图片链接都下载保存到本地,并且替换.md文本中的路径 说干就干,因为在网上没有找到现成的程序所以自己写了这个程序 思路是循环查找文件夹中的文件,然后yiel ...

  7. 【UE4 C++】学习笔记汇总

    UE4 概念知识 基础概念--文件结构.类型.反射.编译.接口.垃圾回收.序列化[导图] GamePlay架构[导图] 类的继承层级关系[导图] 反射机制 垃圾回收机制/算法 序列化 Actor 的生 ...

  8. Android 利用二次贝塞尔曲线模仿购物车加入物品抛物线动画

    Android 利用二次贝塞尔曲线模仿购物车加入物品抛物线动画 0.首先.先给出一张效果gif图. 1.贝塞尔曲线原理及相关公式參考:http://www.jianshu.com/p/c0d7ad79 ...

  9. SVG的路径动画效果

    使用SVG animateMotion实现的一个动画路径效果,相关代码如下. 在线调试唯一地址:http://www.gbtags.com/gb/debug/c88f4099-5056-4ad7-af ...

随机推荐

  1. bat 使用ftp进行文件上传

    实例 @echo off rem 打开远程ftp echo open 172.16.137.23 > ftpconfig.txt rem 使用匿名用户登录 echo user anonymuou ...

  2. Blazor 组件库开发指南

    翻译自 Waqas Anwar 2021年5月21日的文章 <A Developer's Guide To Blazor Component Libraries> [1] Blazor 的 ...

  3. Pycharm去除波浪线等相关操作

  4. Intel® QAT加速卡之逻辑实例

    Intel QAT加速卡逻辑实例 1. QAT相关的名词组织关系 在本手册中描述的平台上,处理器可以连接到一个或多个英特尔通信芯片组8925至8955系列(PCH)设备. 从软件角度来看,每个PCH设 ...

  5. vue项目 'node-sass'问题

    Cannot find module 'node-sass' 解决办法: 运行命令:cnpm install node-sass@latest 即可解决,( 网络差的同学可以选择重新下载no-modu ...

  6. JAVA反序列化漏洞基础原理

    JAVA反序列化漏洞基础原理 1.1 什么是序列化和反序列化? Java序列化是指把Java对象转换为字节序列的过程: Java反序列化是指把字节序列恢复为Java对象的过程: 1.2 为什么要序列化 ...

  7. python matplotlib.pyplot 条形图详解

    python matplotlib.pyplot 条形图详解 一.创建直方图 可以用bar函数来创建直方图 然后用show函数显示直方图 比如: import matplotlib.pyplot as ...

  8. js复制功能代码

    js复制代码: http://www.clipboardjs.cn/

  9. dede调用文章内第一张原始图片(非缩略图)的实现方法

    第一步,修改include/extend.func.php文件,最下面插入函数,查询的是文章附加表,如需查询图片集什么的,改表名即可 //取原图地址 function GetFirstImg($arc ...

  10. Fillder抓包配置

    Faillder设置,完成以下设置后重启Fillder Fillder工具配置 设置端口 端口设置 (根据公司限制使用范围内的端口) 设置是否远程连接 勾选Decrypt HTTPS traffic ...