就是类似仙剑那样..死了之后不是红光一闪..而是直接..升天- -`|||||
其实只是重新定义collapse而已..............
module RPG
class Sprite < ::Sprite
def initialize(viewport = nil)
super(viewport)
@_whiten_duration = 0
@_appear_duration = 0
@_escape_duration = 0
@_collapse_duration = 0
@_damage_duration = 0
@_animation_duration = 0
@_blink = false
@coll_time = 0
end
def collapse
@coll.dispose if @coll != nil
@coll = Sprite.new
@coll.bitmap = Bitmap.new("Graphics/Battlers/#{@battler_name}")
@coll.ox = self.ox
@coll.oy = self.oy
@coll.opacity = 100
@coll.z = 0
@coll.blend_type = 1
@coll.x = self.x
@coll.y = self.y
@coll_time = 42
@_whiten_duration = 0
@_appear_duration = 0
@_escape_duration = 0
end
def update
super
if @_whiten_duration > 0
@_whiten_duration -= 1
self.color.alpha = 128 - (16 - @_whiten_duration) * 10
end
if @_appear_duration > 0
@_appear_duration -= 1
self.opacity = (16 - @_appear_duration) * 16
end
if @_escape_duration > 0
@_escape_duration -= 1
self.opacity = 256 - (32 - @_escape_duration) * 10
end
if @coll_time > 0
@coll_time -= 1
@coll.y = self.y - (48 - @coll_time) * 6
self.opacity = 256 - (48 - @coll_time) * 6
if @coll_time == 0
@coll.dispose
end
end
if @_damage_duration > 0
@_damage_duration -= 1
case @_damage_duration
when 38..39
@_damage_sprite.y -= 2
when 36..37
@_damage_sprite.y -= 4
when 34..35
@_damage_sprite.y -= 2
when 28..33
@_damage_sprite.y -= 4
end
@_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
if @_damage_duration == 0
dispose_damage
end
end
if @_animation != nil and (Graphics.frame_count % 2 == 0)
@_animation_duration -= 1
update_animation
end
if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
update_loop_animation
@_loop_animation_index += 1
@_loop_animation_index %= @_loop_animation.frame_max
end
if @_blink
@_blink_count = (@_blink_count + 1) % 32
if @_blink_count < 16
alpha = (16 - @_blink_count) * 6
else
alpha = (@_blink_count - 16) * 6
end
self.color.set(255, 255, 255, alpha)
end
@@_animations.clear
end
end
end
分成2半
module RPG
class Sprite < ::Sprite
def initialize(viewport = nil)
super(viewport)
@_whiten_duration = 0
@_appear_duration = 0
@_escape_duration = 0
@_collapse_duration = 0
@_damage_duration = 0
@_animation_duration = 0
@_blink = false
@coll_time = 0
end
def collapse
@coll.dispose if @coll != nil
@coll = Sprite.new
@coll.bitmap = Bitmap.new("Graphics/Battlers/#{@battler_name}")
@coll.ox = self.ox
@coll.oy = self.oy
@coll.opacity = 100
@coll.z = 0
w = @coll.bitmap.width
h = @coll.bitmap.height
@coll.x = self.x
@coll.y = self.y + h/2
@coll.src_rect = Rect.new(0,h/2,w,h)
@collq.dispose if @collq != nil
@collq = Sprite.new
@collq.bitmap = Bitmap.new("Graphics/Battlers/#{@battler_name}")
@collq.ox = self.ox
@collq.oy = self.oy
@collq.opacity = 255
@collq.z = 0
@collq.x = self.x
@collq.y = self.y
@collq.src_rect = Rect.new(0,0,w,h/2)
@coll_time = 42
@_whiten_duration = 0
@_appear_duration = 0
@_escape_duration = 0
end
def update
super
if @_whiten_duration > 0
@_whiten_duration -= 1
self.color.alpha = 128 - (16 - @_whiten_duration) * 10
end
if @_appear_duration > 0
@_appear_duration -= 1
self.opacity = (16 - @_appear_duration) * 16
end
if @_escape_duration > 0
@_escape_duration -= 1
self.opacity = 256 - (32 - @_escape_duration) * 10
end
if @coll_time > 0
self.opacity = 0
@coll_time -= 1
@coll.x = self.x + (42 - @coll_time) * 16
@collq.x = self.x - (42 - @coll_time) * 16
@coll.opacity = 256 - (42 - @coll_time) * 16
@collq.opacity = 256 - (42 - @coll_time) * 16
#@collq.opacity = 256 - (42 - @coll_time) * 16
if @coll_time == 0
@coll.dispose
end
end
if @_damage_duration > 0
@_damage_duration -= 1
case @_damage_duration
when 38..39
@_damage_sprite.y -= 2
when 36..37
@_damage_sprite.y -= 4
when 34..35
@_damage_sprite.y -= 2
when 28..33
@_damage_sprite.y -= 4
end
@_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
if @_damage_duration == 0
dispose_damage
end
end
if @_animation != nil and (Graphics.frame_count % 2 == 0)
@_animation_duration -= 1
update_animation
end
if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
update_loop_animation
@_loop_animation_index += 1
@_loop_animation_index %= @_loop_animation.frame_max
end
if @_blink
@_blink_count = (@_blink_count + 1) % 32
if @_blink_count < 16
alpha = (16 - @_blink_count) * 6
else
alpha = (@_blink_count - 16) * 6
end
self.color.set(255, 255, 255, alpha)
end
@@_animations.clear
end
end
end

