同时 , 我们还要为线轨迹函数创建碰撞参数变量 。
【最简单的 UE 4 C++ 教程 —— Actor 线轨迹(line trace】void AActorLineTrace::Tick(float DeltaTime){Super::Tick(DeltaTime);FHitResult OutHit;FVector Start = GetActorLocation();Start.Z += 50.f;Start.X += 200.f;FVector ForwardVector = GetActorForwardVector();FVector End = ((ForwardVector * 500.f) + Start);FCollisionQueryParams CollisionParams;}
在开发时 , 我们希望看到我们的线轨迹 。通过上面的变量 , 我们将使用函数来画一条绿色的线 。如果线轨迹接触到我们这个 actor 中的任何组件 , 将向屏幕打印一条消息 。
void AActorLineTrace::Tick(float DeltaTime){Super::Tick(DeltaTime);FHitResult OutHit;FVector Start = GetActorLocation();Start.Z += 50.f;Start.X += 200.f;FVector ForwardVector = GetActorForwardVector();FVector End = ((ForwardVector * 500.f) + Start);FCollisionQueryParams CollisionParams;DrawDebugLine(GetWorld(), Start, End, FColor::Green, false, 1, 0, 5);if(ActorLineTraceSingle(OutHit, Start, End, ECC_WorldStatic, CollisionParams)){GEngine->AddOnScreenDebugMessage(-1, 1.f, FColor::Green, FString::Printf(TEXT("The Component Being Hit is: %s"), *OutHit.GetComponent()->GetName()));}}
以下是完整的 cpp 代码
#include "ActorLineTrace.h"#include "UObject/ConstructorHelpers.h"#include "DrawDebugHelpers.h"// Sets default valuesAActorLineTrace::AActorLineTrace(){// Set this actor to call Tick() every frame.You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;// add cube to rootUStaticMeshComponent* Cube = CreateDefaultSubobject
实际的运行效果如下
- 最适合养花新手养殖的多肉种类推荐
- 份量和分量有什么区别 分量的区别
- 白云山消炎镇痛膏与万通筋骨贴的功效是什么
- 09-06 周二 Python之KNN算法的实现
- 铳皇无尽的法夫纳第二季 铳皇无尽的法夫纳第二季什么时候出
- 法国盛产葡萄的原因?
- float在c语言中的意思 float在c语言中的意思是定义实数
- 基于SSH的企业信息查询系统
- 三亚房子 三亚房子最好的位置是哪里
- 股东透明度:企业股东信息API在投资决策中的应用