ARPG----C++学习记录02 Section6位置,偏移,函数

设置actor位置

这一句代码就可以更改位置和旋转

 给位置添加偏移offset

将debug的持久都设置为false,在tick中调用,球就会动。这是每帧移动,所以移动速度和帧率有关,需要更改

void Aitem::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

	AddActorWorldOffset(FVector(1.f,0.f,0.f));
	DRAW_SPHERE_ONETICK(GetActorLocation());
}

 这样就能够让球在不同的帧率下按一定的速度运行

void Aitem::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	//移动速率是50cm/s
	float MovementRate = 50.f;
	// MovementRate * DeltaTime (cm/s)*(s/frame) == (cm/frame)变成了每帧移动厘米
	AddActorWorldOffset(FVector(MovementRate* DeltaTime,0.f,0.f));
	DRAW_SPHERE_ONETICK(GetActorLocation());
}

添加正弦函数,让球上下摆动

void Aitem::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	//记录总时间
	RunningTime += DeltaTime;
	//获得振幅
	float DeltaZ = Amplitude * FMath::Sin(RunningTime * 5.f);
 
	AddActorWorldOffset(FVector(0.f,0.f, DeltaZ));
	DRAW_SPHERE_ONETICK(GetActorLocation());
}

UPROPERTY对于变量的作用

ARPG----C++学习记录02 Section6位置,偏移,函数_第1张图片

 当一个私有变量要公开,需要这么设置

 UFUNCTION(BlueprintCallable),使用函数能够正在蓝图中调用

Template 函数

不管对于什么类型的输入都执行相同的操作,传入的类型需要支持你设定的操作,比如加减乘除

//创建template函数
template
T Avg(T First, T Second);

template
inline T Aitem::Avg(T First, T Second)
{
	return (First+ Second)/2;
}

ARPG----C++学习记录02 Section6位置,偏移,函数_第2张图片

 Component 组件

get location得到的都是根组件的位置

ARPG----C++学习记录02 Section6位置,偏移,函数_第3张图片

//头文件中
UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* ItemMesh;

//在构造函数中
//实例化一个ItemMesh
ItemMesh = CreateDefaultSubobject(TEXT("ItemMeshComponent"));
//让它成为根组件
RootComponent = ItemMesh;

你可能感兴趣的:(UE5,学习,UE5)