设置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/sfloat 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对于变量的作用
当一个私有变量要公开,需要这么设置
UFUNCTION(BlueprintCallable),使用函数能够正在蓝图中调用
Template 函数
不管对于什么类型的输入都执行相同的操作,传入的类型需要支持你设定的操作,比如加减乘除
//创建template函数
template<typename T>
T Avg(T First, T Second);template<typename T>
inline T Aitem::Avg(T First, T Second)
{return (First+ Second)/2;
}
Component 组件
get location得到的都是根组件的位置
//头文件中
UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* ItemMesh;//在构造函数中
//实例化一个ItemMesh
ItemMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ItemMeshComponent"));
//让它成为根组件
RootComponent = ItemMesh;