设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1780|回复: 4
打印 上一主题 下一主题

[已经过期] 粒子工厂到底怎么用

[复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
2 小时
注册时间
2010-10-14
帖子
76
跳转到指定楼层
1
发表于 2010-10-21 13:53:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv1.梦旅人

梦石
0
星屑
50
在线时间
75 小时
注册时间
2010-10-11
帖子
275
2
发表于 2010-10-21 13:56:24 | 只看该作者
呃,我觉得,LZ应该把脚本发上来,大家才好解决吧……
重新制作,我就是个渣渣,嗯嗯……
回复 支持 反对

使用道具 举报

乌有君
3
乌有君  发表于 2010-10-21 14:57:36
粒子的本质是虾米?
一堆SPRITE按照设定到处跑而已

粒子的运动规律是虾米?
设定几个属性然后让它们按照这些属性进行运动

运动的本质是虾米?
相对时间内发生的位移而已,也就是每帧UPDATE的时候改XY而已,改多少就是所谓的“速度”

点评

精辟  发表于 2010-10-23 14:10
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
2 小时
注册时间
2010-10-14
帖子
76
4
 楼主| 发表于 2010-10-23 14:07:54 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
9501
在线时间
4401 小时
注册时间
2005-10-22
帖子
6851

开拓者贵宾

5
发表于 2010-10-23 17:25:50 | 只看该作者
本帖最后由 orochi2k 于 2010-10-23 17:34 编辑
LS为什么要匿名嘛,给了我很大启发的,我试着自己编编看吧
tydhc 发表于 2010-10-23 14:07

因为偶是R界华丽的黑幕(大雾)
呃……不过鉴于版主说匿名不方便评分,于是偶囧一下……

可以参考偶的石器中的某段上古时期的源码
  1. #粒子单个
  2. class  Particle
  3.   attr_accessor :bt
  4.   attr_accessor :vx #横位移分量
  5.   attr_accessor :vy #纵位移分量
  6.   attr_accessor :ax #横加速度分量
  7.   attr_accessor :ay #纵
  8.   attr_accessor :aax #加加速度- -0 呃……从前有棵高树,上面挂了很多人……
  9.   attr_accessor :aay #无聊的解析几何啊啊啊啊- -0
  10.   attr_accessor :lifetime #生命周期
  11.   def initialize
  12.      @bt = RPG::Sprite.new
  13.      @vx = 0
  14.      @vy = 0
  15.      @ax = 0
  16.      @ay = 0
  17.      @aax = 0
  18.      @aay = 0
  19.      @lifetime = 0
  20.   end
  21.   def dispose
  22.     if @bt == nil
  23.       return
  24.     end
  25.     @bt.dispose
  26.     @bt = nil
  27.     #GC.start
  28.   end  
  29.   ################################
  30.   def setlife(t)
  31.      @lifetime = t
  32.   end
  33.   def setv( vx = nil , vy = nil )
  34.     if vx != nil
  35.       @vx = vx
  36.     end
  37.     if vy != nil
  38.       @vy = vy
  39.     end   
  40.   end  
  41.   def seta( ax = nil , ay = nil)
  42.      if ax != nil
  43.        @ax = ax
  44.      end  
  45.      if ay != nil
  46.         @ay = ay  
  47.      end
  48.    end  
  49.    ###############################
  50.    def update
  51.      if @bt == nil
  52.        return
  53.      end
  54.      if @lifetime <= 0
  55.        @bt.bitmap.dispose
  56.        @bt.dispose
  57.      end
  58.      if  @bt.disposed?
  59.        @bt = nil
  60.        return
  61.      end
  62.      @ax += @aax
  63.      @ay += @aay
  64.      @vx += @ax
  65.      @vy += @ay
  66.      @bt.x += @vx
  67.      @bt.y += @vy
  68.      @lifetime -= 1
  69.      @bt.update
  70.    end  
  71.    ##################################
  72. end
复制代码
下面是如何将单个的粒子变成一坨华丽的粒子炮(大雾)

  1. ###########喷射1号###################################################
  2. class Particle_Fire
  3.   def initialize(grtt,time,x,y)
  4.     @time = time
  5.     @particles = []
  6.     @grtt = grtt
  7.     @temp = 0
  8.     @x = x
  9.     @y = y
  10.   end
  11.   def update
  12.     if @temp >= @grtt
  13.       return
  14.     end  
  15.     for i in @temp..(@temp + @grtt/@time)
  16.       @particles[i] = Particle.new
  17.       @particles[i].bt.x = @x
  18.       @particles[i].bt.y = @y
  19.       @particles[i].bt.z = 99999
  20.       @particles[i].bt.zoom_x = 0.4
  21.       @particles[i].bt.zoom_y = 0.4
  22.       @particles[i].bt.bitmap = RPG::Cache.picture("particles")  #这个是粒子的贴图文件
  23.       @particles[i].bt.src_rect.set( 0 , 0 , 32 , 32)
  24.       @particles[i].bt.flash(Color.new(240+rand(15),100+rand(120),100+rand(120),255),20)
  25.       @particles[i].setlife(20)
  26.       @particles[i].setv((-200+rand(400)) * 0.05,(-300+rand(100)) * 0.05)
  27.     end  
  28.     @temp += @grtt/@time
  29.     updatefire
  30.   end
  31.   def updatefire
  32.     for i in 0..@temp
  33.       if @particles[i].is_a?(Particle)
  34.        @particles[i].update
  35.        end
  36.     end  
  37.   end  
  38.   def dispose
  39.     for i in 0..@temp
  40.       if @particles[i].is_a?(Particle)
  41.        @particles[i].dispose
  42.        end
  43.     end  
  44.   end  
  45. end  

  46. ##############################################################################
复制代码
大致看完上面的代码,你就能写粒子系统了
剩下就是考虑在哪里插进去,以及垃圾回收之类的东西

粒子的华丽度一般和运动公式的诡异度有关(参考UPDATE那堆,如果粒子自身属性的坐标分量运动无法满足需求其实直接可以在粒子库的那坨东西里直接强制确定粒子的X,Y 从而做出正弦函数什么的东西)

这只是个教学用轻量级版本0.0

点评

坨这个量词用的好!  发表于 2010-10-23 19:26
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-2-24 07:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表