Project1

标题: 新手修改的8帧行走站立图脚本 [打印本页]

作者: boby1999    时间: 2013-7-13 10:34
标题: 新手修改的8帧行走站立图脚本
本帖最后由 boby1999 于 2013-7-13 10:41 编辑

RUBY 代码复制
  1. # 文件名第一位为'&'支持8张循环
  2. # 文件中有8行,前四行依次对应脸向下、脸向左、脸向右、脸向上的站立图
  3. # 后四行依次对应下行、左行、右行、上行的行走图
  4. #
  5. # 文件名第一位为'%'支持8张循环
  6. # 文件中有4行,依次对应下行、左行、右行、上行的行走图
  7. #
  8. # 这两种格式的动画,为适应RMXP中原有1600X1600或800的行走图,
  9. # 把人物图片的中心点位置往下移18%,让脚与想站的格子相吻合
  10.  
  11. # 定义一个模块级常量,文件名第一位为'&'或'%'时每帧画面宽度是总宽除以8
  12. # 第1495号开关量为On时,表示当前是站立状态,否则是移动状态
  13. module MY_SPRITE_DEFINE
  14.   CONST_FRAME_NUMBER = 8
  15.   SWITCH_SN_STOP_OR_MOVING = 1495
  16. end
  17.  
  18. class Sprite_Character < Sprite_Base
  19.   #--------------------------------------------------------------------------
  20.   # ● 设定角色的位图
  21.   #--------------------------------------------------------------------------
  22.   def set_character_bitmap
  23.     self.bitmap = Cache.character(@character_name)
  24.     sign = @character_name[/^[\!\$]./]
  25.     if @character_name[0] == '&'
  26.       @cw = bitmap.width / MY_SPRITE_DEFINE::CONST_FRAME_NUMBER
  27.       @ch = bitmap.height / 8 # 前四行为站立图,后四行为行走图
  28.       self.oy = @ch * 0.82    # 把图片的中心点位置往下移18%
  29.     elsif @character_name[0] == '%'
  30.       @cw = bitmap.width / MY_SPRITE_DEFINE::CONST_FRAME_NUMBER
  31.       @ch = bitmap.height / 4
  32.       self.oy = @ch * 0.82    # 把图片的中心点位置往下移18%
  33.     else
  34.       if sign && sign.include?('$')
  35.         @cw = bitmap.width / 3
  36.         @ch = bitmap.height / 4
  37.       else
  38.         @cw = bitmap.width / 12
  39.         @ch = bitmap.height / 8
  40.       end
  41.       self.oy = @ch
  42.     end
  43.     self.ox = @cw / 2
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 源矩形的更新
  47.   #--------------------------------------------------------------------------
  48.   def update_src_rect
  49.     if @tile_id == 0
  50.       if @character_name[0] == '&'
  51.         sx = @character.pattern * @cw
  52.         if $game_switches[MY_SPRITE_DEFINE::SWITCH_SN_STOP_OR_MOVING]
  53.           # 如果是站立着的,从前4行图形里取对应序号的帧
  54.           sy = (@character.direction - 2) / 2 * @ch
  55.         else
  56.           # 如果是行走中的,从后4行图形里取对应序号的帧
  57.           sy = ((@character.direction - 2) / 2 + 4) * @ch
  58.         end
  59.       elsif @character_name[0] == '%'
  60.         # 根据指定的帧编号获取对应序号的画面
  61.         sx = @character.pattern * @cw
  62.         sy = (@character.direction - 2) / 2 * @ch
  63.  
  64.       else
  65.         index = @character.character_index
  66.         pattern = @character.pattern < 3 ? @character.pattern : 1
  67.         sx = (index % 4 * 3 + pattern) * @cw
  68.         sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch
  69.       end
  70.       self.src_rect.set(sx, sy, @cw, @ch)
  71.     end
  72.   end
  73. end
  74.  
  75. class Game_CharacterBase
  76.   #--------------------------------------------------------------------------
  77.   # ● 更新动画图案
  78.   #--------------------------------------------------------------------------
  79.   def update_anime_pattern
  80.     if @character_name[0] == '&'
  81.       # 系统开关量1495中存放主角是在站立状态吗?true or false
  82.       $game_switches[MY_SPRITE_DEFINE::SWITCH_SN_STOP_OR_MOVING]= @stop_count > 0
  83.  
  84.       # 这里+1再用8取模,则1~8帧就会在行走时循环
  85.       @pattern = (@pattern + 1) % MY_SPRITE_DEFINE::CONST_FRAME_NUMBER
  86.  
  87.     elsif @character_name[0] == '%'
  88.       # 这里+1再用8取模,则1~8帧就会在行走时循环
  89.       @pattern = (@pattern + 1) % MY_SPRITE_DEFINE::CONST_FRAME_NUMBER
  90.  
  91.     else
  92.       if !@step_anime && @stop_count > 0
  93.         @pattern = @original_pattern
  94.       else
  95.         @pattern = (@pattern + 1) % 4
  96.       end
  97.     end
  98.   end
  99. end

作者: feizhaodan    时间: 2013-7-14 09:39
现在这个状态会使所有事件都共用一个开关,确定没有问题么?
作者: boby1999    时间: 2013-7-14 10:02
我也没有找到好的办法来判断当前人物的站或行的状态。当我在把《金庸无双》的第一个场景移植到RMVA时,这是碰到的第一个难题,好在我只控制一个玩家,暂时还能不冲突。请问有更好的处理方法吗?多谢!
作者: sszny    时间: 2013-8-12 05:11
很久以前一直期盼着这个脚本
楼主帮我圆梦了{:2_272:}




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1