Loading

卫星构建

创建一个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;
    }
}

这就是目前所实现的,这里要注意如果你有静态网格体组件以及纹理,可以在蓝图中去给你所写的这个类添加,我在里面加了位置,速度以及可编辑。

posted @ 2024-04-02 11:35  Concealer  阅读(51)  评论(0)    收藏  举报