Ue0:从零开始的虚幻生活(七)

目标

制作一个可以自动生成样式并且玩家碰撞后会自我销毁并播放销毁动画的云彩

1.完成云彩的头文件

创建一个cloud类并声明变量

protect:
	UPROPERTY(VisibleAnyWhere, Category = "Conllision")
		UBoxComponent* BoxConllision;

	UPROPERTY(VisibleAnyWhere,BlueprintReadOnly, Category = "Show")
		UStaticMeshComponent* CloudPlane;
		
	UPROPERTY(EditAnyWhere, Category = "Show")
		TArray<UTexture*> Textures;

	UPROPERTY(BlueprintReadOnly, Category = "Show")
	UMaterialInstanceDynamic* MatInstance;

	UMaterialInterface* MatInterface;
	
	UPROPERTY(VisibleAnyWhere, Category = "Show")
	UTextRenderComponent* ScoreText;

	AMuffin* Muffin;//与之碰撞的角色

	UPROPERTY(EditAnyWhere, Category = "Sound")
	USoundCue* CloudSound;
	
	UPROPERTY(VisibleAnyWhere, Category = "Show")
	UTextRenderComponent* ScoreText;

声明需要用到的函数

protect:
	void SetRandomCloudeTexture();//设置云彩样式
	
	UFUNCTION(BlueprintImplementableEvent)
	void FadeOut();//播放销毁效果(在蓝图内完成)

public:
	virtual void NotifyActorBeginOverlap(AActor* OtherActor) override;//检测碰撞

2.在cpp文件中实现构造函数并完成BeginPlay()

BoxConllision = CreateDefaultSubobject<UBoxComponent>(TEXT("BoxConllision"));
	RootComponent = BoxConllision;

	CloudPlane = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("CloudPlane"));
	CloudPlane->SetupAttachment(RootComponent);

	RainPlane = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("RainPlane"));
	RainPlane->SetupAttachment(CloudPlane);

	ScoreText = CreateDefaultSubobject<UTextRenderComponent>(TEXT("ScoreText"));
	ScoreText->SetupAttachment(RootComponent);

	AudioComponent = CreateDefaultSubobject<UAudioComponent>(TEXT("AudioComponent"));
	AudioComponent->SetupAttachment(CloudPlane);
void ACloud::BeginPlay()
{
	Super::BeginPlay();
	SetRandomCloudeTexture();
	EnableRain();
}

3.实现SetRandomCloudeTexture()函数

MatInterface = CloudPlane->GetMaterial(0);
	MatInstance = CloudPlane->CreateDynamicMaterialInstance(0,MatInterface);
	int Index = FMath::RandRange(0,2);
	if (Textures[Index])
	{
		MatInstance->SetTextureParameterValue(FName(TEXT("Texture")), Textures[Index]);
		CloudPlane->SetMaterial(0, MatInstance);
	}

4.实现NotifyActorBeginOverlap()函数

Super::NotifyActorBeginOverlap(OtherActor);
	Muffin = Cast<AMuffin>(OtherActor);
	if (Muffin)
	{
		Muffin->Lauanch();
		DisplayScore();
		UGameplayStatics::PlaySoundAtLocation(this, CloudSound, GetActorLocation());
		FadeOut();
	}

5.在蓝图中实现FadeOut()函数

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值