---恢复内容开始---

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

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

本文讨论的是第一块。

先在项目文件夹右键新建一个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就大功告成了

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

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

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

    文章目录 使用方法 自定义参数 相关链接 Particles.js是一款基于HTML5 Canvas画布的轻量级粒子动画插件,可以设置粒子的形状.旋转.分布.颜色等属性,还可以动态添加粒子,效果非常炫 ...

  2. iOS CAEmitterLayer 实现粒子发射动画效果

    iOS CAEmitterLayer 实现粒子发射动画效果 效果图 代码已上传 GitHub:https://github.com/Silence-GitHub/CoreAnimationDemo 动 ...

  3. PS 软件操作应用处理——粒子化任务效果

      前  言 JRedu 上次分享中,给大家介绍了一些图片的处理方法,主要是通过滤镜里的功能,把图片处理成素描效果或者水彩画效果,营造出不同的氛围. PS是一款非常强大的软件,包含了非常多的功能,合成 ...

  4. 粒子拼字效果(getImageData方法)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 如何让Ue4画面产生振动效果

    可以使用CameraShake蓝图类,对应的C++类为UCameraShake. 这个类是通过修改PlayerController来达到效果

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

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 年前换了一个手机,SONY的Z3C.这个手机在解锁屏幕时有一个滑动动画,类似火 ...

  7. html5 canvas 粒子特效

    不知不觉就已经好久没写过博客了,自从七月正式毕业后,离开了实习了将近九个月的老东家,进了鼠厂后,做的事都是比较传统的前端活,之前在tpy的时候只管做移动h5的特效以及小游戏,再加上实习所以时间比较充裕 ...

  8. cocos2d-x 3.6 mac下的试用(粒子,触摸事件,图片)

    戏说 虽然公司再如何如何,咱程序员在干好课外学习的情况下也是要努力做好本职工作的. 工作中的lua也写多了,深入了解Cocos2d-x当然还是要倒腾倒腾C++,对于一个C#用了这么多年,工作用lua的 ...

  9. 【Stage3D学习笔记续】真正的3D世界(五):粒子特效

    先看效果,按下空格键添加粒子特效: 一般而言粒子特效的实现都是比较复杂的,且不说实现粒子特效的编码和设计,光是编写一个粒子编辑器就不是简单的一件事,但是作者使用了很取巧的方式来完成,我们接下来深入代码 ...

随机推荐

  1. HDU5937 Equation(DFS + 剪枝)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5937 Description Little Ruins is a studious boy, ...

  2. SQLSERVER自动定时(手动)备份工具

    最近项目需要,写了一个小工具软件: 1.实时显示监控 2.可多选择备份数据库 3.按每天定时备份 4.备份文件自动压缩 5.删除之前备份文件 直接上图 1.备份监控界面: 2.数据库设置: 附工具下载 ...

  3. sql 生成指定相同数量数据

    select *from  表名 ,(SELECT NUMBER FROM master..spt_values WHERE number BETWEEN  1 AND  2 AND TYPE='P' ...

  4. 前端学习 第七弹: Javascript实现图片的延迟加载

    前端学习 第七弹: Javascript实现图片的延迟加载 为了实现图片进入视野范围才开始加载首先: <img    src="" x-src="/acsascas ...

  5. libsvm参数学习和核函数使用(转载)

    一.参数说明 English libsvm_options: -s svm_type : set type of SVM (default 0) 0 -- C-SVC        1 -- nu-S ...

  6. Spring 依赖注入方式详解

    平常的Java开发中,程序员在某个类中需要依赖其它类的方法. 通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理. Spring提出了依赖注入的思想,即依赖类不由 ...

  7. 第一天 django

    全栈增长工程师实战 http://growth-in-action.phodal.com/ 生成的代码和示例不一样,static 也要加上 from django.conf.urls import u ...

  8. python安装setuptools

    http://wenku.baidu.com/link?url=I-FCVFpHbP2oyCt1Gjb1X5xHk4P475dVU3j8rWd4b4VSuD-Wd86LdbC7bdYskZdtDfGK ...

  9. URL、URI和URN三者之间的区别

    URI   统一资源标识符 Uniform Resource Identifier URL      统一资源定位符     Uniform Resource Locator URN     统一资源 ...

  10. nginx全局变量实例对照 rewrite参考手册

    http://dwz.stamhe.com/index.php?_a=index&_m=show&count=10 remote_addr 客户端ip,如:192.168.4.2 bi ...