02c++呵呵老师【官方案例FloatingActor】

为actor添加一个静态网格体组件变量,类型是public的

	UPROPERTY(VisibleAnywhere) //这样才能让虚幻编辑器看到这个变量(公开)
		UStaticMeshComponent* VisualMesh;//StaticMeshComponent,它将担当对象的视觉表示

在构造函数里,我们对指针变量进行赋值。

//创建一个组件,并将该组件的地址赋给指针变量
VisualMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
//将该组件附属在根组件上面
VisualMesh->SetupAttachment(RootComponent);

在这里我们看一下CreateDefaultSubobject的代码

//这是一个模板类,并且返回一个指针
template<class TReturnType>
	TReturnType* CreateDefaultSubobject(FName SubobjectName, bool bTransient = false)
	{
		UClass* ReturnType = TReturnType::StaticClass();
		return static_cast<TReturnType*>(CreateDefaultSubobject(SubobjectName, ReturnType, ReturnType, /*bIsRequired =*/ true, bTransient));
	}

现在在资源文件夹下,找到相关资源

static ConstructorHelpers::FObjectFinder<UStaticMesh> CubeVisualAsset(TEXT("/Game/StarterContent/Shapes/Shape_Cube.Shape_Cube"));

if (CubeVisualAsset.Succeeded())
{
    //如果成功找到,就将该资源赋给网格体
    VisualMesh->SetStaticMesh(CubeVisualAsset.Object);
    VisualMesh->SetRelativeLocation(FVector(0.0f, 0.0f, 0.0f));
}

在tick()函数中,写功能,希望actor可以自转和上下浮动

//获得actor的位置
FVector NewLocation = GetActorLocation();
//获得actor的旋转角度
FRotator NewRotation = GetActorRotation();
//获得物体创建时间
float RunningTime = GetGameTimeSinceCreation();
//获得一个高度
float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
//高度放大20倍
NewLocation.Z += DeltaHeight * 20.0f;       //Scale our height by a factor of 20
//得到一个旋转角度
float DeltaRotation = DeltaTime * 20.0f;    //Rotate by 20 degrees per second
//得到绕z轴的旋转角度
NewRotation.Yaw += DeltaRotation;
//设置高度和旋转角度
SetActorLocationAndRotation(NewLocation, NewRotation);

编译,然后创建蓝图

 测试成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无情的阅读机器

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值