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

Project1

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

死亡特效

 关闭 [复制链接]

Lv1.梦旅人

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
帖子
1361

贵宾

跳转到指定楼层
1
发表于 2008-2-4 07:34:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
强人勿看!!!



第一次试着写VX的脚本..就把以前做过的一个东西做到VX上来...
话说RGSS2写的好规范的说..

就是敌人死亡后的一些莫名其妙的效果..
缩小and旋转.碎片.之类的..

  1. #==============================================================================
  2. # ■ Sprite_Battler
  3. #------------------------------------------------------------------------------
  4. #  战斗显示用活动块。Game_Battler 类的实例监视、
  5. # 活动块的状态的监视。
  6. #==============================================================================
  7. module DeadEffect
  8.   Normal = 0
  9.   Flying = 1
  10.   Half = 2
  11.   Debris = 3
  12.   Debris_Size = 30
  13.   Rotating = 4
  14.   Wave = 5
  15. end
  16. class Sprite_Battler < Sprite_Base
  17.   include DeadEffect
  18.   #--------------------------------------------------------------------------
  19.   # ● 定量
  20.   #--------------------------------------------------------------------------
  21.   WHITEN    = 1                      # 白色闪光 (行动开始)
  22.   BLINK     = 2                      # 闪烁 (伤害)
  23.   APPEAR    = 3                      # 出现 (出现、复活)
  24.   DISAPPEAR = 4                      # 消失 (逃走)
  25.   COLLAPSE  = 5                      # 崩坏 (战斗不能)
  26.   #--------------------------------------------------------------------------
  27.   # ● 定义实例变量
  28.   #--------------------------------------------------------------------------
  29.   attr_accessor :battler
  30.   #--------------------------------------------------------------------------
  31.   # ● 初始化对像
  32.   #     viewport : 视口
  33.   #     battler  : 战斗者 (Game_Battler)
  34.   #--------------------------------------------------------------------------
  35.   def initialize(viewport, battler = nil)
  36.     super(viewport)
  37.     @battler = battler
  38.     @battler_visible = false
  39.     @effect_type = 0            # 效果种类
  40.     @effect_duration = 0        # 效果剩余时间
  41.     @dead_sprites = []           # 精灵
  42.     @dead_type = 0
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 释放
  46.   #--------------------------------------------------------------------------
  47.   def dispose
  48.     if self.bitmap != nil
  49.       self.bitmap.dispose
  50.     end
  51.     super
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ● 刷新画面
  55.   #--------------------------------------------------------------------------
  56.   def update
  57.     super
  58.     if @battler == nil
  59.       self.bitmap = nil
  60.     else
  61.       @use_sprite = @battler.use_sprite?
  62.       if @use_sprite
  63.         self.x = @battler.screen_x
  64.         self.y = @battler.screen_y
  65.         self.z = @battler.screen_z
  66.         update_battler_bitmap
  67.       end
  68.       setup_new_effect
  69.       update_effect
  70.     end
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 刷新传送的位图数据
  74.   #--------------------------------------------------------------------------
  75.   def update_battler_bitmap
  76.     if @battler.battler_name != @battler_name or
  77.        @battler.battler_hue != @battler_hue
  78.       @battler_name = @battler.battler_name
  79.       @battler_hue = @battler.battler_hue
  80.       self.bitmap = Cache.battler(@battler_name, @battler_hue)
  81.       @width = bitmap.width
  82.       @height = bitmap.height
  83.       self.ox = @width / 2
  84.       self.oy = @height
  85.       if @battler.dead? or @battler.hidden
  86.         self.opacity = 0
  87.       end
  88.     end
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ● 设置新效果
  92.   #--------------------------------------------------------------------------
  93.   def setup_new_effect
  94.     if @battler.white_flash
  95.       @effect_type = WHITEN
  96.       @effect_duration = 16
  97.       @battler.white_flash = false
  98.     end
  99.     if @battler.blink
  100.       @effect_type = BLINK
  101.       @effect_duration = 20
  102.       @battler.blink = false
  103.     end
  104.     if not @battler_visible and @battler.exist?
  105.       @effect_type = APPEAR
  106.       @effect_duration = 16
  107.       @battler_visible = true
  108.     end
  109.     if @battler_visible and @battler.hidden
  110.       @effect_type = DISAPPEAR
  111.       @effect_duration = 32
  112.       @battler_visible = false
  113.     end
  114.     if @battler.collapse
  115.       @effect_type = COLLAPSE
  116.       @effect_duration = 48
  117.       @battler.collapse = false
  118.       @battler_visible = false
  119.       @dead_type = rand(6)
  120.       dead_effect
  121.     end
  122.     if @battler.animation_id != 0
  123.       animation = $data_animations[@battler.animation_id]
  124.       mirror = @battler.animation_mirror
  125.       start_animation(animation, mirror)
  126.       @battler.animation_id = 0
  127.     end
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● 刷新效果
  131.   #--------------------------------------------------------------------------
  132.   def update_effect
  133.     if @effect_duration > 0
  134.       @effect_duration -= 1
  135.       case @effect_type
  136.       when WHITEN
  137.         update_whiten
  138.       when BLINK
  139.         update_blink
  140.       when APPEAR
  141.         update_appear
  142.       when DISAPPEAR
  143.         update_disappear
  144.       when COLLAPSE
  145.         update_collapse
  146.       end
  147.     end
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 刷新白色闪光效果
  151.   #--------------------------------------------------------------------------
  152.   def update_whiten
  153.     self.blend_type = 0
  154.     self.color.set(255, 255, 255, 128)
  155.     self.opacity = 255
  156.     self.color.alpha = 128 - (16 - @effect_duration) * 10
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 刷新闪烁效果
  160.   #--------------------------------------------------------------------------
  161.   def update_blink
  162.     self.blend_type = 0
  163.     self.color.set(0, 0, 0, 0)
  164.     self.opacity = 255
  165.     self.visible = (@effect_duration % 10 < 5)
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● 刷新出现效果
  169.   #--------------------------------------------------------------------------
  170.   def update_appear
  171.     self.blend_type = 0
  172.     self.color.set(0, 0, 0, 0)
  173.     self.opacity = (16 - @effect_duration) * 16
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # ● 刷新消失效果
  177.   #--------------------------------------------------------------------------
  178.   def update_disappear
  179.     self.blend_type = 0
  180.     self.color.set(0, 0, 0, 0)
  181.     self.opacity = 256 - (32 - @effect_duration) * 10
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● 刷新崩坏效果
  185.   #--------------------------------------------------------------------------
  186.   def update_collapse
  187.     case @dead_type
  188.     when Normal
  189.       self.opacity = 256 - (48 - @effect_duration) * 6
  190.     when Flying
  191.       @dead_sprites.each{|sprite|sprite.y -= 10;sprite.opacity = 256 - (48 - @effect_duration) * 6}
  192.       self.opacity = 256 - (32 - @effect_duration) * 10
  193.     when Half
  194.       @dead_sprites[0].x -= 5
  195.       @dead_sprites[1].x += 5
  196.       @dead_sprites.each{|sprite|sprite.opacity = 256 - (48 - @effect_duration) * 6}
  197.     when Debris
  198.       @dead_sprites.each{|sprite|sprite.y -= 5;sprite.x += (rand(5)-2);sprite.opacity = 256 - (48 - @effect_duration) * 6}
  199.     when Rotating
  200.       @dead_sprites.each{|sprite|sprite.angle += 360/48;sprite.zoom_x -= 0.025;sprite.zoom_y -= 0.025}
  201.     when Wave
  202.       @dead_sprites.each{|sprite|sprite.update;sprite.opacity = 256 - (48 - @effect_duration) * 6}
  203.     end
  204.     if @effect_duration == 0
  205.       @dead_sprites.each{|sprite|sprite.dispose}
  206.       @dead_sprites.clear
  207.     end
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ● 死亡效果
  211.   #--------------------------------------------------------------------------
  212.   def dead_effect
  213.     case @dead_type
  214.     when Normal
  215.       self.blend_type = 1
  216.       self.color.set(255, 128, 128, 128)
  217.     when Flying
  218.       sprite = Sprite.new(self.viewport)
  219.       sprite.bitmap = self.bitmap
  220.       sprite.x = self.x
  221.       sprite.y = self.y
  222.       sprite.z = self.z + 1
  223.       sprite.ox = self.ox
  224.       sprite.oy = self.oy
  225.       @dead_sprites << sprite
  226.       self.blend_type = 0
  227.       self.color.set(0, 0, 0, 0)
  228.     when Half
  229.       sprite_up = Sprite.new(self.viewport)
  230.       sprite_up.bitmap = self.bitmap
  231.       sprite_up.ox = self.ox
  232.       sprite_up.oy = self.oy
  233.       sprite_up.x = self.x
  234.       sprite_up.y = self.y
  235.       sprite_up.src_rect.height /= 2
  236.       sprite_down = Sprite.new(self.viewport)
  237.       sprite_down.bitmap = self.bitmap
  238.       sprite_down.ox = self.ox
  239.       sprite_down.oy = self.oy
  240.       sprite_down.x = self.x
  241.       sprite_down.y = self.y + (self.height / 2)
  242.       sprite_down.src_rect.height /= 2
  243.       sprite_down.src_rect.y += sprite_down.src_rect.height
  244.       @dead_sprites << sprite_up << sprite_down
  245.       self.opacity = 0
  246.     when Debris
  247.       for x in 0...Debris_Size
  248.         for y in 0...Debris_Size
  249.           sprite = Sprite.new(self.viewport)
  250.           sprite.bitmap = self.bitmap
  251.           sprite.ox = self.ox
  252.           sprite.oy = self.oy
  253.           sprite.x = self.x + (x * (self.width / Debris_Size))
  254.           sprite.y = self.y + (y * (self.height / Debris_Size))
  255.           sprite.src_rect.set(
  256.           (x * (self.width / Debris_Size)),
  257.           (y * (self.height / Debris_Size)),
  258.           (self.width / Debris_Size),
  259.           (self.height / Debris_Size))
  260.           @dead_sprites << sprite
  261.           self.opacity = 0
  262.         end
  263.       end
  264.     when Rotating
  265.       sprite = Sprite.new(self.viewport)
  266.       sprite.bitmap = self.bitmap
  267.       sprite.ox = self.ox
  268.       sprite.oy = @height / 2
  269.       sprite.x = self.x
  270.       sprite.y = self.y - sprite.oy
  271.       @dead_sprites << sprite
  272.       self.opacity = 0
  273.     when Wave
  274.       sprite = Sprite.new(self.viewport)
  275.       sprite.bitmap = self.bitmap
  276.       sprite.ox = self.ox
  277.       sprite.oy = self.oy
  278.       sprite.x = self.x
  279.       sprite.y = self.y
  280.       sprite.wave_amp = 10
  281.       @dead_sprites << sprite
  282.       self.opacity = 0
  283.     end
  284.   end
  285. end
复制代码
-.-

Lv1.梦旅人

传奇

梦石
0
星屑
50
在线时间
4 小时
注册时间
2007-4-10
帖子
427
2
发表于 2008-2-4 07:47:19 | 只看该作者
我是弱人  要看  试下!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

传奇

梦石
0
星屑
50
在线时间
4 小时
注册时间
2007-4-10
帖子
427
3
发表于 2008-2-4 07:51:33 | 只看该作者
好像效果不显著
回复 支持 反对

使用道具 举报

Lv1.梦旅人

WG后援团
此人已死 有事烧纸

梦石
0
星屑
69
在线时间
12 小时
注册时间
2008-1-12
帖子
1829

贵宾

4
发表于 2008-2-4 08:35:41 | 只看该作者
有范例或截图没?
郑重声明:
1.本人是文盲,以上内容文字均不认识,也看不懂是什么意思。
2.此事与本人一点关系都没有,只是本着“看贴(虽然看不懂)回贴,利人利己的中华民族优秀传统美德”,顺便赚1个RP。
3. 本人在此留言均为网络上复制,并不代表本人同意、支持或者反对楼主观点。  
4. 如本人留言违反国家有关法律,请网络管理员及时删除本人跟贴。  
5. 因删贴不及时所产生的任何法律(包括宪法,民法,刑法,书法,公检法,基本法,劳动法,婚姻法,输入法,没办法,国际法,今日说法,吸星大-法,与台湾关系法及文中涉及或可能涉及以及未涉及之法,各地治安管理条例)纠纷或责任本人概不负责。
6. 本人谢绝任何跨省追捕行为,如有需要请直接联系楼主、原作者以及网络管理员或法人代表。  
7. 此声明最终解释权归本人所有。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-7-30
帖子
42
5
发表于 2008-2-4 09:21:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

欠扁头像持有者

梦石
0
星屑
114
在线时间
16 小时
注册时间
2005-10-22
帖子
423
6
发表于 2008-11-23 10:41:12 | 只看该作者
这个效果很好的说~但是发现角色要是死了的话,就会出错。。。
水兵土星--死亡之星!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
12 小时
注册时间
2009-7-2
帖子
48
7
发表于 2009-7-7 10:05:11 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 14:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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