ue4粒子实现流血效果

动作/射击游戏中,击中角色时常常伴随着血花效果,增强打击感的同时,也方便了玩家对命中与否的判断。

血液效果分两块,首先是受伤部位在受击瞬间产生血雾粒子,然后在身体、地面、墙面等处附加血迹贴图。

本文讨论的是第一块。

先在项目文件夹右键新建一个particlesystem,默认是长这样的:

可以看到是一坨红绿蓝的东西袅袅升起。

这坨东西其实就是由一个个尖尖的小粒子,通过一系列运动规律展现出来的,每个单元的外观由required→emitter中的材质决定

于是我们要把材质替换为血雾的基本单元。

因此我们要先制作一个M_Blood1材质。

通过百度图片搜索“血”,我挑选出了一张比较合适的图片作为贴图

通过ps中反相一系列处理得到了大致的alpha贴图

(由于我不是美工,效果有限还请见谅)

接下来就是材质连线了,只实现了基本的贴图显示

blend mode选择translucent,两张贴图分别连到对应位置即可

然后将该材质设为粒子发射的材质

为了方便观察我们把它拖到场景中

依稀有点血雾的样子了,不过炊烟袅袅升起肯定不对

于是我们需要调整initial velocity

我是这么设置的

向自身x轴方向恒定速度喷出,并且有个向上的初速度

然后还会有向下的加速度(右键添加const acceleration)

加速度过大过小都不好,我设为-200

然后我修改了required→duration中的发射持续时间以及循环数(1表示不循环只喷一轮duration)

当然spawn中的发射速度也可以自行调整

下面就是如何在角色受击时显示粒子特效的问题了,倘若直接使用anim notify,无法让粒子恰好处于受击位置(伤口处),因此我们新建一个C++类MyParticleActor

MyParticleActor.h文件

#pragma once

#include "GameFramework/Actor.h"
#include "MyParticleActor.generated.h"

UCLASS()
class SANSHAOYESWORD_API AMyParticleActor : public AActor
{
    GENERATED_BODY()

public:
    // Sets default values for this actor‘s properties
    AMyParticleActor();

protected:
    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

    UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = MyParticle, meta = (AllowPrivateAccess = "true"))
        UParticleSystemComponent* particle = NULL;
public:
    // Called every frame
    virtual void Tick(float DeltaTime) override;

};

MyParticleActor.cpp在构造函数中创建particle组件

AMyParticleActor::AMyParticleActor()
{
     // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don‘t need it.
    PrimaryActorTick.bCanEverTick = true;

    particle=CreateDefaultSubobject<UParticleSystemComponent>(TEXT("particle"));
    particle->SetupAttachment(RootComponent);
}

然后进入编辑器,创建继承MyParticleActor的蓝图bp_blood1

将template设为我们刚才制作的血雾粒子即可

还需要对这个actor的life span进行设置,我设置的是1.5秒

最后我们进入receivedamage函数,也就是处理角色受击的代码,插入下列生成血雾粒子代码

//扣完血马上进行流血效果
                    if (particleactor_blood) {
                        FActorSpawnParameters SpawnParams;
                        AMyParticleActor* newblood_particleactor = GetWorld()->SpawnActor<AMyParticleActor>(
                            particleactor_blood,
                            hitlocation,//产生于受击位置
                            vct2sp((attacker->GetActorLocation()-hitlocation)).Rotation()
                            //hitlocation和attacker的中心连线的水平分量作为particle发射方向
                            , SpawnParams);//
                        newblood_particleactor->AttachRootComponentTo(GetMesh(),FName(*hitbonename),
                            EAttachLocation::KeepWorldPosition,true);//
                    }
                    else {
                        throw std::exception("流血粒子物体缺失!!!!");
                    }

当然在此之前要让Character类暴露给蓝图一个particleactor_blood

//用于受击时流血效果的
    UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = MyParticle, meta = (AllowPrivateAccess = "true"))
        UClass* particleactor_blood = NULL;

最后在Character蓝图中将particleactor_blood设为我们刚才制作好的bp_blood1就大功告成了

大致效果(截图看的不太明显其实明显有喷出来的动态过程):

时间: 2024-11-10 07:26:11

ue4粒子实现流血效果的相关文章

Particles.js基于Canvas画布创建粒子原子颗粒效果

文章目录 使用方法 自定义参数 相关链接 Particles.js是一款基于HTML5 Canvas画布的轻量级粒子动画插件,可以设置粒子的形状.旋转.分布.颜色等属性,还可以动态添加粒子,效果非常炫酷,能和鼠标互动吸附或者是躲避鼠标指针. 使用方法 1.该粒子动画库插件使用方法非常简单,首先要在页面中引入particles.js文件. <script src="js/particles.js"></script> 2.在页面中使用一个div来作为放置粒子的容器

粒子拼字效果(getImageData方法)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta h

ANDROID模拟火花粒子的滑动喷射效果

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 年前换了一个手机,SONY的Z3C.这个手机在解锁屏幕时有一个滑动动画,类似火花的粒子喷射,效果很炫... 于是尝试着模拟了一下,完成后效果如下图(还有很多细节没有实现):    SurfaceView: 因为surfaceview是使用的双缓冲机制,所以很适合绘制这种需要不停变换的画面. 下面我从网上copy了几条关于SurfaceView的一些特性(已经表明了出处),因为

iOS 烟花撒花效果,图层渐变,图层倒影特效。CAEmitterLayer粒子发射器

iOS 烟花撒花效果,图层渐变,图层倒影特效.CAEmitterLayer粒子发射器 上一节我写了一个关于视图图层的相关类,有关CALayer这个类的使用和一些用法,具体看这里,就是我们在处理视图的时候要对他的图层来进行修改,需要注意的几个地方,还有锚点的介绍,然后这篇主要说一个利用CALayer里面的一个类来实现一个烟花的特效. 这个就是利用了CAEmitterLayer粒子发射器图层来制作的一个效果,这个动态截图工具也是下面的朋友推荐的,效果很好很不错mac版地址,就是通过一个发射点来发射一

iOS动画之粒子效果

04.粒子动画 1.效果: 随机绘制一条路径,点击开始按钮,粒子动画 2.实现思路 1.搞个画板绘制路径,自定义view 2.给自定义view添加pan手势,和创建复制图层和圆形图层,只需要设置一次,在awakeFromNib方法中设置. // 添加pan手势 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; [self addGes

?Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果

Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果 使用忍者飞镖创建粒子效果 游戏中,诸如烟.火.水滴.落叶等粒子效果,都可以使用粒子系统(particle system)来实现.例如,<明朝传奇>中的篝火,如图2-32所示.粒子系统的最新版本也被称做忍者飞镖(Shuriken),因为场景中添加的粒子系统酷似忍者飞镖,如图2-33所示. 图2-32  游戏中的篝火               图2-33  粒子系统,也被称为忍者飞镖 unity中粒子基本属性 在使用粒子系统前,先了解一下它

使用Egret粒子编辑器实现烟雾效果

今天这篇文章主要是记录我自己使用Egret Feather做的一个烟雾效果,分享给初学Egret的小伙伴. Egret Feather下载地址: https://www.egret.com/products/others.html#egret-featherEgret Feather使用手册:http://developer.egret.com/cn/github/egret-docs/tools/Feather/manual/index.html 首先上面的状态栏,见名知意,没什么介绍的.要提

AE粒子效果运动轨迹拖尾的特效实现

我以前喜欢看NBA,然后看见ESPN的很多NBA视频里的各种特效,有一个特效就是NBA球星出手以后,球变成一个亮点,随着球的移动,会产生拖尾,就像流星一样.刚开始我用会声会影做视频,会声会影可以实现视频的剪辑,加入特效就比较受限制.所以,专门写这个博客,来阐述一下特效的实现效果,既能让自己不至于忘记特效的实现,也能帮助其他有需要的人一起交流. 一.前提条件1.我们需要在AE中插入particular的粒子特效2.下载Trapcode插件,这里particular特效有很多应用之处,需要下载的小伙

canvas粒子文字动画教程

1,什么是canvas粒子动画 canvas粒子文字动画效果绚丽,实现的方法和难点主要是根据缓动函数来确定粒子的轨迹. 2.主要实现步骤 创建一个canvas,在canva上绘制文字或图片,然后获取像素的信息并生成一个粒子数组 var imageData = ctx.getImageData(0,0,canvas.width,canvas.height); ... var dotList = []; for(var x=0; x<imageData.width; x+=mass) { for(v