卫星构建
创建一个c++卫星移动
首先创建一个新的项目
编写c++类
在创建工程完成之后会出现编辑启动而且vs已经处于打开状态(前提是你已经安装好vs2022社区版即可),进入到编辑器下滑内容浏览器可以清楚看到c++类,在你的项目名称下单击右键创建一个c++类即可我这里将其命名为Satellite
创建之后它会给你自生成一个头文件和一个cpp文件,我们在头文件中要创建一个私有属性private,允许在ue5编辑器中使用下面是具体的代码
UStaticMeshComponent* StaticMeshComponent;
UPROPERTY(EditAnywhere) // 允许在UE5编辑器中编辑的属性
UStaticMeshComponent* StaticMeshComponent1; // 声明静态网格体组件指针
UPROPERTY(EditAnywhere)
UStaticMeshComponent* StaticMeshComponent2;
FVector CurrentTargetLocation; // 当前目标位置
int32 TargetIndex; // 当前目标位置索引
在cpp文件里进行实现
// 创建第一个静态网格体组件,并附加到RootComponent上
StaticMeshComponent1 = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent1"));
RootComponent = StaticMeshComponent1;
// 创建第二个静态网格体组件
StaticMeshComponent2 = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent2"));
SetActorLocation(FVector(6000.f, 0.f, 0.f)); // 设置位置
Speed = 5.f; // 默认移动速度
TargetIndex = 0;
void ASatellite::MoveToNextTarget(float deltatime)
{
if (TargetLocations.Num() == 0)
{
return;
}
FVector Direction = (TargetLocations[TargetIndex] - GetActorLocation()).GetSafeNormal();
FVector NewLocation = GetActorLocation() + Direction * Speed * GetWorld()->GetDeltaSeconds();
// 移动到下一个目标位置
SetActorLocation(TargetLocations[TargetIndex]);
// 更新目标位置索引
if (++TargetIndex >= TargetLocations.Num())
{
TargetIndex = 0;
}
}
这就是目前所实现的,这里要注意如果你有静态网格体组件以及纹理,可以在蓝图中去给你所写的这个类添加,我在里面加了位置,速度以及可编辑。