扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 137|回复: 0

[转载发布] 【移植】VX/VA行走图素材,XP也能用

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    昨天 18:01
  • 签到天数: 114 天

    连续签到: 4 天

    [LV.6]常住居民II

    2339

    主题

    404

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10635
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13406

    灌水之王

    发表于 2024-4-19 23:05:31 | 显示全部楼层 |阅读模式
    大家都知道,XP的人物行走图不同于VX/VA,XP行走图为4×4样式,VX/VA则是3×4,也就是说,XP播放的行走动画要比VX/VA的多一个格子。这样VX/VA的行走图就不能在XP上使用。如果要把第四个图案给弄出来,就需要你把第二列的所有图案都复制一下,再插入到第一列之前,文件一多了就不太方便。不过,只要稍微改一下行走图的刷新方式,那么在XP中用3×4的行走图便不是问题,可以省去许多PS操作。
    脚本大部分是游戏的默认脚本,改动的地方我已经标了出来,其实稍稍写几句就好。
    如果出现兼容性问题,那就按照我标出来的地方手动更改即可。
    有BUG欢迎报告,下面是脚本:
    RUBY 代码
    1. #============================================================================
    2. # VX/VA 行走图兼容
    3. #----------------------------------------------------------------------------
    4. # By : RyanBern
    5. #----------------------------------------------------------------------------
    6. # 使用方法:
    7. #     由于 VX/VA 的行走图都是一张 png 里面有多个人,所以使用的时候先用图片处理
    8. #     工具(PS、美图均可,不要用windows画图)把原 png 分解成单个人的,这个不需
    9. #     要任何美工基础。然后分割出来的素材命名的时候在文件名最前面加上"$"符号即可
    10. #     表示这个素材来自 VX/VA。
    11. #     注意,使用VX/VA行走图时,XP选择图形的时候仍然是四等分的,因此你要选择第
    12. #     二列的方块作为行走图的原始图案(即停止帧)
    13. #----------------------------------------------------------------------------
    14. # 更新记录
    15. #     2014/12/24  修复行走图静止帧的问题
    16. #============================================================================
    17. class Game_Player
    18.   alias rb_refresh_20141224 refresh
    19.   def refresh
    20.     rb_refresh_20141224
    21.     @original_pattern = character_for_xp? ? 0 : 1
    22.   end
    23. end
    24. class Game_Character
    25.   # RB追加定义
    26.   def character_for_xp?
    27.     returnself.character_name.slice(/^\$/) != "$"
    28.   end
    29.   #--------------------------------------------------------------------------
    30.   # ● 刷新画面
    31.   #--------------------------------------------------------------------------
    32.   def update
    33.     # 跳跃中、移动中、停止中的分支
    34.     if jumping?
    35.       update_jump
    36.     elsif moving?
    37.       update_move
    38.     else
    39.       update_stop
    40.     end
    41.     # 动画计数超过最大值的情况下
    42.     # ※最大值等于基本值减去移动速度 * 1 的值
    43.     if@anime_count > 18 - @move_speed * 2
    44.       # 停止动画为 OFF 并且在停止中的情况下
    45.       ifnot@step_animeand@stop_count > 0
    46.         # 还原为原来的图形
    47.         @pattern = @original_pattern
    48.       # 停止动画为 ON 并且在移动中的情况下
    49.       else
    50.         # 更新图形
    51.         # RB modified
    52.         @pattern = (@pattern + 1) % (character_for_xp? ? 4 : 3)
    53.         # RB modified END
    54.       end
    55.       # 清除动画计数
    56.       @anime_count = 0
    57.     end
    58.     # 等待中的情况下
    59.     if@wait_count > 0
    60.       # 减少等待计数
    61.       @wait_count -= 1
    62.       return
    63.     end
    64.     # 强制移动路线的场合
    65.     if@move_route_forcing
    66.       # 自定义移动
    67.       move_type_custom
    68.       return
    69.     end
    70.     # 事件执行待机中并且为锁定状态的情况下
    71.     if@startingor lock?
    72.       # 不做规则移动
    73.       return
    74.     end
    75.     # 如果停止计数超过了一定的值(由移动频度算出)
    76.     if@stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
    77.       # 移动类型分支
    78.       case@move_type
    79.       when1  # 随机
    80.         move_type_random
    81.       when2  # 接近
    82.         move_type_toward_player
    83.       when3  # 自定义
    84.         move_type_custom
    85.       end
    86.     end
    87.   end
    88. end
    89. class Sprite_Character
    90.   #--------------------------------------------------------------------------
    91.   # ● 更新画面
    92.   #--------------------------------------------------------------------------
    93.   def update
    94.     super
    95.     # 元件 ID、文件名、色相与现在的情况存在差异的情况下
    96.     if@tile_id != @character.tile_idor
    97.        @character_name != @character.character_nameor
    98.        @character_hue != @character.character_hue
    99.       # 记忆元件 ID 与文件名、色相
    100.       @tile_id = @character.tile_id
    101.       @character_name = @character.character_name
    102.       @character_hue = @character.character_hue
    103.       # 元件 ID 为有效值的情况下
    104.       if@tile_id >= 384
    105.         self.bitmap = RPG::Cache.tile($game_map.tileset_name,
    106.           @tile_id, @character.character_hue)
    107.         self.src_rect.set(0, 0, 32, 32)
    108.         self.ox = 16
    109.         self.oy = 32
    110.       # 元件 ID 为无效值的情况下
    111.       else
    112.         self.bitmap = RPG::Cache.character(@character.character_name,
    113.           @character.character_hue)
    114.         # RB modified
    115.         @cw = bitmap.width / (self.character.character_for_xp? ? 4 : 3)
    116.         # RB modified END
    117.         @ch = bitmap.height / 4
    118.         self.ox = @cw / 2
    119.         self.oy = @ch
    120.       end
    121.     end
    122.     # 设置可视状态
    123.     self.visible = (not@character.transparent)
    124.     # 图形是角色的情况下
    125.     if@tile_id == 0
    126.       # 设置传送目标的矩形
    127.       sx = @character.pattern * @cw
    128.       sy = (@character.direction - 2) / 2 * @ch
    129.       self.src_rect.set(sx, sy, @cw, @ch)
    130.     end
    131.     # 设置脚本的坐标
    132.     self.x = @character.screen_x
    133.     self.y = @character.screen_y
    134.     self.z = @character.screen_z(@ch)
    135.     # 设置不透明度、合成方式、茂密
    136.     self.opacity = @character.opacity
    137.     self.blend_type = @character.blend_type
    138.     self.bush_depth = @character.bush_depth
    139.     # 动画
    140.     if@character.animation_id != 0
    141.       animation = $data_animations[@character.animation_id]
    142.       animation(animation, true)
    143.       @character.animation_id = 0
    144.     end
    145.   end
    146. end
    复制代码

                 本帖来自P1论坛作者chd114,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=374700  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-3-15 15:29 , Processed in 0.134722 second(s), 53 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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