(下面的说法没有求证,是我估计的)粒子从名字可以看出是一种较小的东西,在游戏中粒子

也是小的图片(也有大的).我估计招式就是用粒子效果做的.

粒子效果就是把一个图片用不同的方法(旋转,缩放,平移等)不断的在屏幕上,按照预设随机

的生成许多粒子.这样看起来就很华丽了.

下面看一下效果(这个效果是截取的hge里的)

love2d自带particialsystem,可是仅支持Image类型,不支持Quad,

这样就只能把每个粒子作为单独的图片存放,不方便阿.当然我们也可

以利用love.graphics里的函数自己实现一个,不过你看看wiki里的

particialsystem的属性个数,实现起来它复杂了.

后来我在wiki里找到了把hge粒子效果文件转为love属性的工具,

地址https://love2d.org/wiki/psi2love是0.7版本的,我稍微修改了一下以适合0.8版本,修改的地方如下:

114行改为printf( "  ps:setSizes( %g, %g )
80行改为printf( "  local ps = love.graphics.newParticleSystem( img, %s )\n", argv[ 4 ] );
再把80行上面添加一行 printf("  local img=love.graphics.newImage(\"%s\")\n",argv[3]);

请先下载代码(看文末),切换到hgeparticle_tool目录如下:

linux我已经编译好了,win下请自行编译psi2love.cpp

这是个纯cpp,不需要设置.下面我说说如何使用:

linux下./psi2love particle8.psi par par.png 100 > par.lua

win下去掉"./"

参数意义 psi文件 生成的lua函数名 使用的图片 粒子最大个数

其中"> par.lua"是重定向到输出文件.生成的文件如下.

local function par()-- created from particle8.psilocal img=love.graphics.newImage("par.png")local ps = love.graphics.newParticleSystem( img, 100 )ps:setEmissionRate( 13 )ps:setLifetime( -1 ) -- foreverps:setParticleLife( 0.436508, 0.992063 )ps:setDirection( -1.5708 )ps:setSpread( 6.28319 )-- ps:setRelative( false )ps:setSpeed( 9.5238, 9.5238 )ps:setGravity( 0, 0 )ps:setRadialAcceleration( -0.634921, -0.634921 )ps:setTangentialAcceleration( 0, 0 )ps:setSizes( 1.3817, 2.04464 ) -- there's a bug in 0.7.1 that forces us to set the size variation using its own functionps:setSizeVariation( 0.428571 )ps:setSpin( 0, 0, 0 )ps:setColors( 46, 145, 255, 46, 248, 139, 44, 72 )-- ps:setColorVariation( 0.206349 )-- ps:setAlphaVariation( 0 )return ps
end

这里使用的hge工具只是方便设置love粒子的属性,因为可以随时看到效果,保存为psi文件后,可以用psi2love转为love的属性.

运行particleCN.exe(linux下使用wine),如下图,你可以设置不同的参数查看效果.

右下角的1-9九个按钮是加载预定义的效果,即particle1-9.psi

可惜的是hge的粒子效果使用的是particles.png里的图块.

particles.png是128*128,里面的图块是32*32,你可以自己按这个规格

做一个.可惜不会处理,下面的效果是用的particle8.psi的描述,图片

是在网上随便找的一个.效果如下:

下面说一下如何使用particilsystem.

1.在load里

img=love.graphics.newImage("par.png") --加载图片

ps = love.graphics.newParticleSystem( img, 100 ) --使用img创建图片,最大粒子数100

2.在draw里

love.graphics.draw(ps,400,300) --绘制粒子

3.在update里

ps:update(dt) --更新粒子

说明一下,粒子的属性很多可以看wiki,其中setLifetime若为-1就一直循环,否则时间结束后停止.

代码下载,已clone的直接git pull
git clone git://gitcafe.com/dwdcth/love2d-tutor.git
或git clone https://github.com/dwdcth/mylove2d-tutor-in-chinese.git

love2d教程10--粒子效果相关推荐

  1. 使用lua开发游戏--love2d教程汇总

    说明,我只是在网上浏览时发现了"金庸群侠传lua复刻版",有源码,基于sdl使用C语言,我大概看了 一下不是很懂.后来发现了love2d,也是基于sdl,于是便有了用love2d再 ...

  2. 3dmax:3dmax经典案例详细步骤图文教程之粒子阵列粒子系统制作星球爆炸特效动画效果

    3dmax:3dmax经典案例详细步骤图文教程之粒子阵列粒子系统制作星球爆炸特效动画效果 目录 3dmax经典案例详细步骤图文教程之粒子阵列粒子系统制作星球爆炸特效动画效果

  3. 【Cocosd2d实例教程七】Cocos2d实现超炫的粒子效果!!

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.介绍      你想拥有炫酷的效果么,你想让你的应用亮瞎别人的狗眼么!!不要急,这里告诉大家怎么实现绚丽的粒 ...

  4. Cocos2d-x教程(6)-粒子效果

    欢迎加入 Cocos2d-x 交流群: 193411763 转载时请注明原文出处 http://blog.csdn.net/u012945598 源码请到 http://download.csdn.n ...

  5. 简直要逆天!超炫的 HTML5 粒子效果进度条

    我喜欢粒子效果作品,特别是那些能够应用于实际的,例如这个由 Jack Rugile 基于 HTML5 Cavnas 编写的进度条效果.看着这么炫的 Loading 效果,即使让我多等一会也无妨:)你呢 ...

  6. Unity学习笔记(4)-----粒子效果的实现

    Unity学习笔记(4)-–粒子效果的实现 一.效果展示 下面用若干张张动图展示效果: 大概就是这样,并不是很难. 实际效果要比图中的好一点(顺畅得多). 实现步骤 大致可以分为如下几个步骤,然后逐个 ...

  7. iOS动画开发之五——炫酷的粒子效果

    iOS动画开发之五--炫酷的粒子效果 在上几篇博客中,我们对UIView层的动画以及iOS的核心动画做了介绍,基本已经可以满足iOS应用项目中所有的动画需求,如果你觉得那些都还不够炫酷,亦或是你灵光一 ...

  8. love2d教程8--动画

    本来我是新把动画和角色移动写在一块的可是出现了很多问题,特别是笔误 程序调了很久,还是不稳定.后来觉得,应该把动画和角色移动分开,因为还有其它 的运动也需要动画,这样才合理. 动画(animation ...

  9. Web 开发中很实用的10个效果【附源码下载】

    在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...

  10. 黑马lavarel教程---10、lavarel模型关联

    黑马lavarel教程---10.lavarel模型关联 一.总结 一句话总结: 1.模型关联比较方便,一次定义,后面都可以使用 2.关联关系 使用动态属性进行调用 1.一对多,多对多实例? 一对多: ...

最新文章

  1. 利用fnd_conc_global.set_req_globals设置子请求的Parent Request ID
  2. Jaspersoft Studio简介
  3. Linux 命令:pwd、touch、ll、wget
  4. 一篇带你搞透回溯算法
  5. Android修改原生AlertDialog按钮的颜色大小边距位置以及标题居中等
  6. 我女朋友让我删前任,我明明删了她还是要分手...
  7. 数据库的事务,隔离级别和3大范式
  8. 方舟进入服务器显示未知错误,服务器点进去后出错求解!急!
  9. Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块...
  10. 【Flink】Could not instantiate the executor. Make sure a planner module is on the classpath
  11. 建站基础知识之CSS 究竟什么来头?
  12. volatile一题
  13. iphone开发 加速计
  14. 兖州计算机老师,兖州最美教师 | 风采展示(二)
  15. 获取设备Mac地址和IP地址
  16. 解决树莓派 Error -110 whilst initializing SD card的一种方法
  17. pmu2008终端服务器,PMU升级指导.doc
  18. 报错:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.
  19. 【电路设计小白】ADC芯片配置学习之一初期理论
  20. ZZULIOJ:1141: 进制转换

热门文章

  1. 全网的 IP 归属地显示,带你5分钟加上,就是这么简单
  2. 分子力学无法模拟化学键的断裂的原因
  3. OpenRASP Java应用自我保护使用
  4. 核心交换机和普通交换机有何区别?
  5. 【警告】扣扣热键你了解多少
  6. 【调剂】 济南大学机器学习及其应用课题组拟接收计算机硕士(调剂及第一志愿)报考-预宣传...
  7. 【Pandas总结】第十节 Pandas 合并数据集_pd.pivot_table()
  8. pandas——显示设置
  9. unity 3d音效如何设置?,近大远小
  10. gz是什么意思饭圈_网上看不懂的字母缩写!知道Xs是什么意思吗?不是尺寸!...