Project1

标题: R剧爱好者福音-华丽镜头移动脚本 [打印本页]

作者: 黑暗之神    时间: 2007-8-22 05:02
标题: R剧爱好者福音-华丽镜头移动脚本
本帖最后由 后知后觉 于 2009-12-29 17:03 编辑

#==============================================================================
# ■ 华丽镜头移动脚本  by 黑暗之神Kaiser.DS
#------------------------------------------------------------------------------
#  1-插入此段脚本到Main前面
#   2-功能
#     a-[镜头平滑移动到事件/角色]
#       在事件里的[设置移动路线]里选择需要镜头转向的角色输入脚本kds即可
#     b-[镜头跟随事件]
#       在事件里的[设置移动路线]选择好需要跟随的事件后输入脚本kds_move_start开
#       始跟随,当不想跟随时再输入kds_move_over
#==============================================================================
这个脚本是我SLG工程里的附产品,在镜头平滑指向事件、角色的同时,带来视觉上的华丽
工程范例:
http://rpg.blue/UP_PIC/200707/镜头跟随.rar

  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
  95. #==============================================================================
复制代码

作者: 黑暗之神    时间: 2007-8-22 05:02
标题: R剧爱好者福音-华丽镜头移动脚本
本帖最后由 后知后觉 于 2009-12-29 17:00 编辑

重复内容
作者: 雪雾明日晴    时间: 2007-8-22 05:08
先看看再说=w=
[LINE]1,#dddddd[/LINE]
适合SLG那类的战场场景移动..恩..
不过我认为对R剧的作用不大呢...
作者: 幻の飞鱼    时间: 2007-8-22 05:11
看完LZ头像就忽然觉得这是个好东西了^_^

另外orz LS的签名图

以下引用雪雾明日晴于2007-8-21 21:08:18的发言:

先看看再说=w=



适合SLG那类的战场场景移动..恩..
不过我认为对R剧的作用不大呢...


[本贴由作者于 2007-8-21 21:10:16 最后编辑]



{/fd}{/fd}R剧可是最可能需要用到镜头跟踪事件的呀

而且镜头移动华丽一点不也是增色么{/fd}
作者: 雪雾明日晴    时间: 2007-8-22 05:16
不是啦...这个你看了就知道了..
一般R剧都是小场景的吧..我见过的都是那样的。
虽然我说对R剧可能作用不大,但是这个脚本的价值可丝毫不减啊~
作者: 七夕小雨    时间: 2007-8-22 06:19
……………………………………………………


很好……很强大………………{/dk}

PS:……本人当年的怨念……
作者: 精灵使者    时间: 2007-8-22 06:21
精灵可能那种场面会把主角作为npc用,npc作为主角用……
或者干脆主角行走图改为无,全部使用npc来做……不过镜头移动这个的确很好的说。
作者: 九泪    时间: 2007-8-22 10:42
除了SLG,其实RPG关键NPC对话前、关键人物出场等,

镜头移动以重点突出,也是相当有用的。

鼓励{/qiang}{/qiang}
作者: tjkz    时间: 2007-8-24 05:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: 暴风の龙    时间: 2007-8-24 12:07
不错不错,效果很好哦{/se}
作者: K’    时间: 2007-8-25 05:36
发布完毕 VIP += 4

http://rpg.blue/web/htm/news831.htm

如果您对此有何异议请短信告诉我。{/wx}
作者: 小猫爪    时间: 2007-8-29 01:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: 黑暗之神    时间: 2007-8-29 16:05
以下引用小猫爪于2007-8-28 17:23:15的发言:

谢谢楼主,真是很棒很有用的脚本哦
不过有个问题,我能不能改变平滑移动的速度呢?可以的话在哪里改呢?(原谅我,我是脚本白痴)
有些场景中觉得这样"咻"得一下过去了,有点快了啊


      if $game_map.display_x != display_x
         if ($game_map.display_x - display_x).abs < 22
           $game_map.display_x = display_x
         else
           $game_map.display_x += (display_x - $平滑移动.old_display_x)/8
         end
      end
      if $game_map.display_y != display_y
         if ($game_map.display_y - display_y).abs <= 22
            $game_map.display_y = display_y
         else
            $game_map.display_y += (display_y - $平滑移动.old_display_y)/8
         end
      end
改成:
    if $game_map.display_x != display_x
       if ($game_map.display_x - display_x).abs <= (display_x - $平滑移动.old_display_x).abs/8
         $game_map.display_x = display_x
       else
         $game_map.display_x += (display_x - $平滑移动.old_display_x)/8
       end
    end
    if $game_map.display_y != display_y
       if ($game_map.display_y - display_y).abs <= (display_y - $平滑移动.old_display_y).abs/8
          $game_map.display_y = display_y
       else
          $game_map.display_y += (display_y - $平滑移动.old_display_y)/8
       end
    end

上面所有的/8改成/16的话就变慢了一倍,越大越慢
作者: 张永    时间: 2007-8-29 16:19
确实是很有用啊,可以斜向移动。可以利用这点做出很多好效果,斜向毕竟能容易给人整幅画的印象
作者: 小猫爪    时间: 2007-8-30 04:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小猫爪    时间: 2007-8-30 06:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: 玄机子    时间: 2007-8-31 11:31
{/hx} 真的非常好用啊~~~{/hx}
作者: 黑暗之神    时间: 2007-9-1 02:42
以下引用小猫爪于2007-8-29 22:04:47的发言:

啊,刚刚试了下,好象原来的脚本只改数字的话也能起到减慢或加快移动的作用

不过哦,还有个问题要麻烦楼主一下,如果我想在同一张地图里移动,但前面一次是快的,后面一次是慢一点的该怎么在事件里做啊?

(ORZ 脚本白痴继续叩拜楼主中)

这个的话你把那数字换成变量,然后再到游戏里改变量就可以了....
作者: 小猫爪    时间: 2007-9-1 08:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: 黑暗之神    时间: 2007-9-2 18:49
把所有/8 这个改成$game_variables[1] 就是1号变量

作者: 小猫爪    时间: 2007-9-2 22:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: liangruo123    时间: 2007-9-2 23:18
对我有用咯
作者: 水龙棋子    时间: 2007-12-27 07:52
真的是超级好用呢 谢谢楼主!
作者: 火鸡三毛老大    时间: 2008-1-4 20:48
对我的游戏不但没有美化  还是威胁{/ll}  收藏起来




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