设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1035|回复: 4
打印 上一主题 下一主题

[已经过期] 怎么能让一个NPC说话时,镜头自动跳转到该NPC身上

[复制链接]

Lv1.梦旅人

梦石
0
星屑
69
在线时间
9 小时
注册时间
2006-2-16
帖子
66
跳转到指定楼层
1
发表于 2013-4-28 22:56:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如题,自动执行NPC说话的时候,希望镜头直接转到以该NPC为中心的画面。

Lv4.逐梦者

水月·镜花

梦石
10
星屑
403
在线时间
1181 小时
注册时间
2005-10-22
帖子
1183

开拓者

2
发表于 2013-4-28 23:02:54 | 只看该作者
事件中有移動鏡頭的命令。
英文版是map scroll,中文版應該是地圖捲動或者畫面滾動

PS:如果是類似過場的鏡頭,也可以直接隱藏主角然後通過移動主角控制鏡頭

评分

参与人数 1星屑 +66 收起 理由
hys111111 + 66 感谢回答

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
423 小时
注册时间
2011-3-11
帖子
299
3
发表于 2013-4-29 06:01:35 | 只看该作者
所谓自动:玩家看着是自动,但是我们maker当然要花点心思了。
我只想说明镜头移动不是一个键的事。
最简单的方法是用画面卷动,卷动方向是NPC相对角色的方向、卷动格数是NPC移动到角色位置所需的格数+1(因为默认情况是角色处于画面中心、若不是还需自己测试)、卷动速度自定。

评分

参与人数 1星屑 +66 收起 理由
hys111111 + 66 感谢回答

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
88
在线时间
331 小时
注册时间
2010-10-24
帖子
778
4
发表于 2013-4-30 01:23:04 | 只看该作者
画面卷动,但略微有些麻烦。

评分

参与人数 1星屑 +66 收起 理由
hys111111 + 66 感谢回答

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
244 小时
注册时间
2010-6-19
帖子
95
5
发表于 2013-4-30 10:07:00 | 只看该作者
  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. #==============================================================================
复制代码
用这个脚本。然后在事件页写上[attachimg]16**5[/attachimg]
就可以了

未命名.jpg (21.95 KB, 下载次数: 8)

未命名.jpg

评分

参与人数 1星屑 +76 收起 理由
hys111111 + 76 感谢回答

查看全部评分

没事做个游戏
暗黑-外传
剧情:■■■■■□□□□□
脚本:■■■■■■■■■□
素材:■■■■■■■■■■
地图:■■■■■■■■■□
系统:■■■■■■■■□□
整体完成度:■■■■■■■□□□
发布日期:未知
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-26 13:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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