Project1

标题: 关于镜头移动脚本的问题 [打印本页]

作者: imgoofy    时间: 2013-3-30 20:33
标题: 关于镜头移动脚本的问题
本帖最后由 hcm 于 2013-4-15 13:14 编辑

首先我使用的是这个脚本
  1. #==============================================================================
  2. # ■ 华丽镜头移动脚本 by 黑暗之神Kaiser.DS
  3. #------------------------------------------------------------------------------
  4. #  1-插入此段脚本到Main前面
  5. #   2-功能
  6. #     a-[镜头平滑移动到事件/角色]
  7. #       在事件里的[设置移动路线]里选择需要镜头转向的角色输入脚本kds即可
  8. #     b-[镜头跟随事件]
  9. #       在事件里的[设置移动路线]选择好需要跟随的事件后输入脚本kds_move_start开
  10. #       始跟随,当不想跟随时再输入kds_move_over
  11. #==============================================================================
  12. $平滑移动 = nil
  13. class Scene_Map
  14. alias kds_update update
  15. def update
  16.      kds_update
  17.      if $平滑移动 != nil
  18.        cen_x = (320 - 16) * 4
  19.        cen_y = (240 - 16) * 4
  20.        max_x = ($game_map.width - 20) * 128
  21.        max_y = ($game_map.height - 15) * 128
  22.        display_x = [0, [$平滑移动.x * 128 - cen_x, max_x].min].max
  23.        display_y = [0, [$平滑移动.y * 128 - cen_y, max_y].min].max
  24.        if $game_map.display_x != display_x
  25.           if ($game_map.display_x - display_x).abs < 22
  26.             $game_map.display_x = display_x
  27.           else
  28.             $game_map.display_x += (display_x - $平滑移动.old_display_x)/8
  29.           end
  30.        end
  31.        if $game_map.display_y != display_y
  32.           if ($game_map.display_y - display_y).abs <= 22
  33.              $game_map.display_y = display_y
  34.           else
  35.              $game_map.display_y += (display_y - $平滑移动.old_display_y)/8
  36.           end
  37.        end
  38.        if $game_map.display_x == display_x and $game_map.display_y == display_y
  39.           $平滑移动.center($平滑移动.x, $平滑移动.y)
  40.           $平滑移动 = nil
  41.        end
  42.        return
  43.      end
  44. end
  45. end
  46. class Game_Character
  47. CENTER_X = (320 - 16) * 4
  48. CENTER_Y = (240 - 16) * 4
  49. attr_accessor :old_display_x
  50. attr_accessor :old_display_y
  51. attr_accessor :kds_move
  52. def center(x, y)
  53.      max_x = ($game_map.width - 20) * 128
  54.      max_y = ($game_map.height - 15) * 128
  55.      $game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max
  56.      $game_map.display_y = [0, [y * 128 - CENTER_Y, max_y].min].max
  57. end
  58. def kds
  59.      @old_display_x = $game_map.display_x
  60.      @old_display_y = $game_map.display_y
  61.      case @id
  62.      when 0
  63.        $平滑移动 = $game_player
  64.      else
  65.        $平滑移动 = $game_map.events[@id]
  66.      end
  67. end
  68. def kds_move_start
  69.        @kds_move = ""
  70. end
  71. def kds_move_over
  72.        @kds_move = nil
  73. end
  74. alias kds_update update
  75. def update
  76.      last_real_x = @real_x
  77.      last_real_y = @real_y
  78.      kds_update
  79.      if @kds_move != nil
  80.       if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
  81.         $game_map.scroll_down(@real_y - last_real_y)
  82.       end
  83.       if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
  84.         $game_map.scroll_left(last_real_x - @real_x)
  85.       end
  86.       if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
  87.        $game_map.scroll_right(@real_x - last_real_x)
  88.       end
  89.       if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
  90.         $game_map.scroll_up(last_real_y - @real_y)
  91.       end
  92.      end
  93. end
  94. end
复制代码
但是在跟随事件移动这个功能上,镜头移动速度太快了,根本就没有以事件为中心地移动好吧。。。求帮助。。。




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