UE4 C++学习笔记之初识三维向量结构体FVector

任务:获取场景Actor的起始位置,根据布尔值的设定,初始化Actor的位置,以及给Actor设定定向移动 

float.h关键部分源码如下:

public:	
	// Sets default values for this actor's properties
	AFloat();

	UPROPERTY(VisibleAnywhere,Category="ActorMeshComponents")
	UStaticMeshComponent* StaticMesh;

        //InitLocation向量,用来储存Actor初始化的位置,可在实例中编辑	
	UPROPERTY(EditInstanceOnly,BlueprintReadWrite,Category="Float Variates")
	FVector InitLocation;

        //PreLocation向量,用来储存Actor的起始位置,在属性界面中只可读	
	UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category = "Float Variates")
	FVector PreLocation;


        //InitVector向量,用来储存定向移动的偏移方向向量,可在实例中编辑
	UPROPERTY(EditInstanceOnly,BlueprintReadWrite, Category = "Float Variates")
	FVector InitVector;

        //bShouldInit布尔变量,用来控制是否对Actor进行位置初始化,可在实例中编辑
	UPROPERTY(EditInstanceOnly,BlueprintReadOnly,Category = "Float Variates")
	bool bShouldInit;

        //bShouldMove布尔变量,用来控制是否让Actor进行定向移动,可在实例中编辑
	UPROPERTY(EditInstanceOnly, BlueprintReadOnly, Category = "Float Variates")
	bool bShouldMove;

float.cpp关键部分源码如下:

// 构造函数,对Actor相关变量进行初始化
AFloat::AFloat()
{
 	// 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;
	StaticMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("CustomStatciMesh"));
	InitLocation = FVector(0);
	PreLocation = FVector(0);
	InitVector = FVector(1,0,0);
	bShouldInit = false;
	bShouldMove = false;

}

// Called when the game starts or when spawned
//BeginPlay为虚幻引擎自有函数,在游戏开始时执行一次
void AFloat::BeginPlay()
{
	Super::BeginPlay();

        //获取Actor当前位置并赋值给PreLocation向量
	PreLocation = GetActorLocation();

        //如果bShouldInit布尔值为true,则将当前Actor位置初始化为InitLocation向量
	if (bShouldInit)
	{
		SetActorLocation(InitLocation);
	}
}

// Called every frame
//Tick为虚幻引擎自有函数,在游戏运行的每一帧均执行一次
void AFloat::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

        //如果bShouldMove布尔值为true,则当前Actor位置偏移InitVector向量,由于每一帧执行一次,相当于实现了定向移动
	if (bShouldMove)
	{
		AddActorLocalOffset(InitVector);
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_44928892/article/details/107916870