查看: 1613|回复: 4

[已经过期] 如何让怪物有微动作不呆滞

[复制链接]
梦石
0
星屑
55
在线时间
7 小时
注册时间
2015-8-14
回帖
3
发表于 2015-8-15 02:20:11 | 显示全部楼层 |阅读模式

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

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

×
要怎么让怪物可以像是GIF图档会动作的

因为我是制作横版战斗

我希望让怪物可以稍微的动

我有GIF档但是不知道该怎么用

求大大解答( ;゚д゚)
梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
回帖
163
发表于 2015-8-15 10:22:20 | 显示全部楼层
[pre lang="ruby"]#==============================================================================
# +++ MOG VX - Battler L Effects (v1.0) +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com/ 把静态战斗图做出动态的效果
#==============================================================================
# Adiciona alguns efeitos de animação no sprite do Battler.
# - Efeito de respirar.
# - Efeito de flutuar.
# - Efeito de mover-se para os lados.
#==============================================================================
module MOG_BATTLER_L_EFFECTS
    #Velocidade da respiração(de 1 a 9)
    BREATH_SPEED = 1
    #Definição dos inimigos que terão o efeito de respiração
    #呼吸式动作
    BREATH_EFFECT_ENEMY_ID = [1,2,4,5,7,24,28]  
    #Definição dos battlers que terão o efeito flutuar.
    #上下小幅度移动
    FLOAT_EFFECT_ENEMY_ID = [1]  
    #Definição dos battlers que terão o efeito movimentar se para os lados.
    #左右小幅度移动
    MOVESIDE_EFFECT_ENEMY_ID = [26]
    #Condições que cancelam os efeito do sprite. (Exp - Stop / Paralyze)
    #打不到???
    STATES_CANCEL_EFFECT = [60]
end

#===============================================================================
# ■ Game_Battler
#===============================================================================
class Game_Battler
include MOG_BATTLER_L_EFFECTS
  
#--------------------------------------------------------------------------
# ● Add State
#--------------------------------------------------------------------------                       
alias breath_effect_add_state add_state
def add_state(state_id)
     breath_effect_add_state(state_id)
     if self.is_a?(Game_Enemy)
        for i in STATES_CANCEL_EFFECT
            if @states.include?(i)
               @breath_effect = false
               @float_effect = false
               @moveside_effect = false
            end        
        end      
     end
end  

#--------------------------------------------------------------------------
# ● Remove_State
#--------------------------------------------------------------------------                        
alias breath_effect_remove_state remove_state
def remove_state(state_id)
     breath_effect_remove_state(state_id)
     if self.is_a?(Game_Enemy)     
        sce = false
        for i in STATES_CANCEL_EFFECT
            sce = true if @states.include?(i)
        end   
        if sce == false   
           @breath_effect = true if BREATH_EFFECT_ENEMY_ID.include?(@enemy_id)
           @float_effect = true if FLOAT_EFFECT_ENEMY_ID.include?(@enemy_id)
           @moveside_effect = true if MOVESIDE_EFFECT_ENEMY_ID.include?(@enemy_id)           
        end   
     end     
end  
end

#===============================================================================
# ■ Game_Enemy
#===============================================================================
class Game_Enemy < Game_Battler
include MOG_BATTLER_L_EFFECTS
attr_accessor :breath_effect
attr_accessor :float_effect
attr_accessor :moveside_effect

#--------------------------------------------------------------------------
# ● Setup
#--------------------------------------------------------------------------                     
alias breath_effect_initialize initialize
def initialize(index, enemy_id)
     breath_effect_initialize(index, enemy_id)
     @breath_effect = false
     @float_effect = false
     @moveside_effect = false
     @breath_effect = true if BREATH_EFFECT_ENEMY_ID.include?(@enemy_id)
     @float_effect = true if FLOAT_EFFECT_ENEMY_ID.include?(@enemy_id)
     @moveside_effect = true if MOVESIDE_EFFECT_ENEMY_ID.include?(@enemy_id)
end
end

#===============================================================================
# ■ Sprite_Battler
#===============================================================================
class Sprite_Battler < Sprite_Base
include MOG_BATTLER_L_EFFECTS
  
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------                    
alias breath_effect_initialize initialize
def initialize(viewport, battler = nil)
     breath_effect_initialize(viewport, battler )
     breath_effect_setup(battler)
     float_effect_setup(battler)
     modeside_effect_setup(battler)
end

#--------------------------------------------------------------------------
# ● Moveside Effect
#--------------------------------------------------------------------------                       
def modeside_effect_setup(battler)
     @moveside_duration = rand(30)
     @moveside_speed = 0
end  

#--------------------------------------------------------------------------
# ● Float Effect Setup
#--------------------------------------------------------------------------                     
def float_effect_setup(battler)
     @float_duration = rand(40)
     @float_speed = rand(3)
end

#--------------------------------------------------------------------------
# ● Breath Effect Setup
#--------------------------------------------------------------------------                     
def breath_effect_setup(battler)
     @breath_phase = 0
     @breath_effect = false
     @breath_effect_speed = 0
     if @battler.is_a?(Game_Enemy) and @battler.breath_effect
        initial_breath = 1.00 + (@battler.screen_x * 0.001) - (@battler.screen_y * 0.001)     
        initial_breath = 1.1 if initial_breath > 1.1
        initial_breath = 0.9 if initial_breath < 0.9
        self.zoom_y = initial_breath
        ex_speed = [[BREATH_SPEED, 1].max, 9].min
        speed = ex_speed * 0.001
        @breath_effect_speed = speed + (rand(99) * 0.00001)
     end   
end

#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------                  
alias breath_effect_update update
def update
     breath_effect_update
     if @battler.is_a?(Game_Enemy)
        update_breath_effect
        update_float_effect
        update_move_side_effect
     end   
end  

#--------------------------------------------------------------------------
# ● Update Moveside Effect
#--------------------------------------------------------------------------                  
def update_move_side_effect
     return if @battler == nil
     return unless @battler.moveside_effect
     @moveside_speed += 1
     return if @moveside_speed < 4
     @moveside_speed = 0
     @moveside_duration += 1
     case @moveside_duration
        when 0..10
          self.ox += 2
        when 11..15
          self.ox += 1
        when 16..25
          self.ox -= 2
        when 26..30
          self.ox -= 1
        else  
        @moveside_duration = 0
     end
end

#--------------------------------------------------------------------------
# ● Update Float Effect
#--------------------------------------------------------------------------                  
def update_float_effect
     return if @battler == nil
     return unless @battler.float_effect
     @float_speed += 1
     return if @float_speed < 2
     @float_speed = 0
     @float_duration += 1
     case @float_duration
        when 0..15
          self.oy += 2
        when 16..20  
          self.oy += 1
        when 21..35
          self.oy -= 2
        when 36..40  
          self.oy -= 1
        else  
          @float_duration = 0
     end
end

#--------------------------------------------------------------------------
# ● Update Breaht Effect
#--------------------------------------------------------------------------                 
def update_breath_effect
     return if @battler == nil
     return unless @battler.breath_effect
     if @breath_effect_speed == 0   
        ex_speed = [[BREATH_SPEED, 1].max, 9].min
        speed = ex_speed * 0.001      
        @breath_effect_speed = speed + (rand(99) * 0.00001)
        self.zoom_y = 1 + rand(10) * 0.01
     end   
     if @breath_phase == 0
        self.zoom_y += @breath_effect_speed
        @breath_phase = 1 if self.zoom_y >= 1.05
     else
        self.zoom_y -= @breath_effect_speed
        @breath_phase = 0 if self.zoom_y <= 1.01
     end            
end     
end  

$mog_rgss2_battler_l_effects = true[/pre]




可以试下这个脚本,在上面的括号里填你要设置的敌人的ID……试了就知道了。






回复

使用道具 举报

梦石
0
星屑
55
在线时间
7 小时
注册时间
2015-8-14
回帖
3
 楼主| 发表于 2015-8-15 12:49:15 | 显示全部楼层
谢谢上面的大大分享代码

不过这个不是我心目中的效果

抱歉,是我没有说清楚(在此给你跪)

我有一张怪物战斗图的GIF档已经分解成多段PNG档了

要如何把这些档案结合在战斗上

让怪物呈现原本的GIF动画档呢?
回复

使用道具 举报

梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
回帖
163
发表于 2015-8-16 21:33:45 | 显示全部楼层
本帖最后由 duchen5779 于 2015-8-16 21:40 编辑

我想一下……也许敌人行走图战斗就可以。我记得这个在通用的横版战斗系统里(就是SIDEVIEW)有设置,除了我方角色可以用行走图之外,敌方角色也可以用行走图。你可以将你的GIF图档做成一张3*3还是3*4的行走图,在数据库的“敌人”的行走图一栏里选择你弄得好的这张行走图,然后在脚本里按设置弄好,设置好之后和主角的战斗行走效果是一样的,也许你的GIF的效果也能体现出来。

说的有点颠倒不知道你听明白没有( ;゚д゚)
回复

使用道具 举报

梦石
0
星屑
55
在线时间
7 小时
注册时间
2015-8-14
回帖
3
 楼主| 发表于 2015-8-17 19:32:00 | 显示全部楼层
我大概知道你说的方法了

我会想想看的 非常谢谢你
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部