[原创]irrlicht 3d游戏武器粒子特效的实现1

原创 2017年07月27日 13:44:55

3d游戏里的武器特效比如有粒子发光,火焰,或者是剑气散发出来。一般都可以用粒子来实现(有点偷懒还可以用精灵图片动画来实现= =更节约资源,比如梦幻西游那种2d的特效都是图片动画)。




例如上图的武器粒子效果。

思路是这样的。

找到武器剑柄节点以及武器剑尖节点。然后把粒子系统设置在这个AB两点之间喷射即可,万一武器是移动的位置方向变化的,那么也要随时update方向,或者绑定到父节点方式,一劳永逸。

 

首先是武器模型要设置骨骼节点。

我的武器剑尖节点叫joint4,剑柄joint2


下面开始代码了,我用irrlicht 3d引擎来做示范。

加载人物。。

加载武器绑定到人物后背节点



//添加武器节点
scene::IAnimatedMeshSceneNode*  weaponNode = smgr->addAnimatedMeshSceneNode( weaponmesh );



video::SColor startcolor,endcolor;

startcolor=video::SColor(0,50,0,50);//粒子系统开始到结束的颜色定义 可产生渐变效果
endcolor=SColor(0,0,40,50);

     // 创建 粒子系统    
    scene::ISceneNode* pJointNode =weaponNode->getJointNode("joint2");  //joint4是剑尖
    if(pJointNode)
    {
   
        vector3df pos1=pJointNode->getAbsolutePosition();
        vector3df pos2=weaponNode->getJointNode("joint4")->getAbsolutePosition();

        vector3df dir=pos1-pos2;

        dir.normalize();


        ps = device->getSceneManager()->addParticleSystemSceneNode(false); //创建一个粒子系统,并使用自定义的发射器
        
        
        em=ps->createPointEmitter(dir,20,20,
            startcolor, endcolor,//开始颜色和结束颜色
            2000,2000   //存活时间,800-2000毫秒
            );
        em->setMaxStartSize(core::dimension2d<f32>(5.0f, 5.0f));
        em->setMinStartSize(core::dimension2d<f32>(5.0f, 5.0f));

        ps->setEmitter(em);//粒子系统设置发射器
        em->drop();

        ps->setMaterialFlag(video::EMF_LIGHTING, false);
        ps->setMaterialFlag(video::EMF_ZWRITE_ENABLE, false);
        ps->setMaterialTexture(0, device->getVideoDriver()->getTexture("textures/flare.bmp")); // fireball
        //ps->setMaterialType(video::EMT_TRANSPARENT_VERTEX_ALPHA);
        ps->setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR);

        pJointNode->addChild(ps);
    }



 

然后不断更新武器的粒子方向





void MyWeapon::update()
{
	if(weaponType>0 && ps){

		vector3df pos1=weaponNode->getJointNode("joint4")->getAbsolutePosition();
		vector3df pos2=weaponNode->getJointNode("joint2")->getAbsolutePosition();

		vector3df dir=pos1-pos2;

		dir.normalize();
	 	dir*=0.007f;
		em->setDirection(dir);


	}


}




 

完。

 

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

让Irrlicht鬼火引擎显示中文

在网站找到源代码虽然是正确支持中文,却难以编译,经过几天的修改终于正确编译了 需要的文件全部打包点击下载

鬼火引擎irrlicht一些功能资源收集

有新的库收集,会补充 irrAI系统 支持NPC导航,主角寻路 下载 irrAI库

Irrlicht学习之添加中文的支持

Irrlicht在立项之初,可能没有考虑国际化的问题,因此一开始使用的字符集都是ANSI的,似乎是在Irrlicht1.6开始,才开始在GUI和其他模块中将wchar_t当作普通字符的存储格式。但是w...

寻路网格库的编译教程

以下记录一下环境配置过程,首先需要以下几个文件。 1>recastnavigation-master源码包,在github网站上下载即可。 2>premake5.exe,用于生成VS201...

Irrlicht输出中文字符串

Irrlicht输出中文字符串作者:Kagula内容概要以源代码的形式示例,如何让Irrlicht输出中文字符串读者对象:熟悉C语言开发工具的程序员环境[1]Irrlicht 1.6.1下载地址:ht...

Irrlicht学习之创建GUI界面

Irrlicht游戏引擎自带了GUI模块,可以在三维的场景中创建二维的覆盖(Overlay),使得游戏中图标和文字的显示更为方便,配合游戏高效的三维渲染能力,相得益彰。 这一次我将尝...

Irrlicht学习笔记(8)--SpecialFX

说明: 本例程介绍: 阴影 粒子系统 布告板 动态光照 水面节点 1.载入一个房间 用于表现动态光照 关键步骤为;1.1,1.3. 1.2是为了优化贴图效果 //1.加载一个房间...
  • gqkly
  • gqkly
  • 2016-07-04 21:29
  • 2075

unity3d 游戏粒子特效

  • 2017-09-19 18:12
  • 12.39MB
  • 下载

Cocos2d-x游戏引擎开发笔记(12)】粒子系统实现与用户交互的特效

原文地址:【Cocos2d-x游戏引擎开发笔记(12)】粒子系统实现与用户交互的特效作者:九城学院 来源:CSDN    作者:张译成 无实战不学习,这次来用粒子系统实现与用户交互的特...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)