让我们继续《塞尔达传说》中林克技能的制作!!!
本章节的核心目标:素材导入与遥控炸弹的外观
先让我们看一下完成后的效果:
基本流程:素材准备->C++类开发->蓝图配置->场景部署
1.素材准备:视觉元素搭建
1.1 粒子素材
1.2 材质与实例
-
基础材质M_Bomb: 在材质编辑器中,通过颜色常量节点+自发光参数节点构建发光逻辑(如下图的材质图表),实现了红色基底与自发光结合的效果。
-
材质实例: 基于M_Bomb创建MI_BombBox、MIBombSphere(如下图材质实例目录),为不同形态的炸弹差异化视觉效果做准备。
-
调整MI_BombSphere: 调整为紫色,做出差异化即可。
2.C++类开发:定义核心逻辑
作用: 通过C++定义基础组件与生成逻辑,为蓝图可视化配置提供骨架
2.1 头文件(BombBase.h)
定义炸弹基础组件,通过UPROPERTY暴露给蓝图配置:
// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "BombBase.generated.h"class UStaticMeshComponent;
class UParticleSystem;UCLASS()
class ZELDARSKILLS_API ABombBase : public AActor
{GENERATED_BODY()public: // Sets default values for this actor's propertiesABombBase();// 静态网格组件,控制炸弹外观UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Components")TObjectPtr<UStaticMeshComponent> SM;// 炸弹生成粒子特效UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Components")TObjectPtr<UParticleSystem> BombSpawnVFX;protected:// Called when the game starts or when spawnedvirtual void BeginPlay() override;public: // Called every framevirtual void Tick(float DeltaTime) override;};
2.2 源文件(BombBase.cpp)
实现组件初始化与生成逻辑
// Fill out your copyright notice in the Description page of Project Settings.#include "Actors/BombBase.h"
#include "Components/StaticMeshComponent.h"
#include "Particles/ParticleSystemComponent.h"
#include "Kismet/GameplayStatics.h"
// Sets default values
ABombBase::ABombBase()
{// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = false;// 创建并设置静态网格为根组件SM = CreateDefaultSubobject<UStaticMeshComponent>("Bomb Mesh");SM->SetupAttachment(RootComponent);}// Called when the game starts or when spawned
void ABombBase::BeginPlay()
{Super::BeginPlay();// 生成时在当前位置播放 BombSpawnVFX特效UGameplayStatics::SpawnEmitterAtLocation(GetWorld(), BombSpawnVFX, GetActorLocation());}// Called every frame
void ABombBase::Tick(float DeltaTime)
{Super::Tick(DeltaTime);}
3.蓝图配置:多形态定制
3.1 蓝图创建
基于BombBase类,在内容浏览器创建BPA_BombBase蓝图。然后基于BombBase类创建子蓝图类分别为BPA_BombBox和BPA_BombSphere。
3.2 蓝图属性配置
-
立方体炸弹(BPA_BombBox):
打开蓝图,选中SM组件,在细节面板配置:- 静态网格:Shape_Cube(选一个立方体的网格即可)
- 材质:**MI_BombBox(选择1中创建的材质实例)**如下图所示
-
球形炸弹(BPA_BombBaseSphere):
同理,进行配置:- 静态网格:Shape_Sphere(选一个球体)
- 材质:MI_BombSphere(选择1中创建的材质实例)
4. 场景投放效果
将BPA_BombBase和BPA_BombBaseSphere拖入场景中
第16部分完成啦!!
十分感谢大家的阅读、点赞、收藏!!
如果有不足之处,有错误地方,欢迎大家在评论区讨论、批评、指正!!!