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

Project1

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

[已经解决] 画面如何跟随主角移动

 关闭 [复制链接]

Lv2.观梦者

梦石
0
星屑
685
在线时间
579 小时
注册时间
2010-2-15
帖子
1367
跳转到指定楼层
1
发表于 2011-7-23 22:52:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想做一段煽情的剧情(仿EVA剧场版里碇真嗣营救凌波丽的那个,老感动了)。
现在想要这样解决这个问题:

1.在画面左部显示一个待拯救公主
2.右部是正常的地图
3.主角在右部
7.主角向左飞奔(方法详见第8步)
8.主角绝对位置不动,画面向右快速滚动

现在就是主角在右方的时候画面不能向右卷动(除非用事件,但是会出现很多BUG,我试过)
求解决方法。

Lv2.观梦者

姬魂

梦石
0
星屑
428
在线时间
400 小时
注册时间
2009-8-30
帖子
612

开拓者

2
发表于 2011-7-24 01:25:10 | 只看该作者
截取图片再用软件的动画功能实现,如何?
【RPG MAKER MZ 】游戏制作新手群:185916404
回复

使用道具 举报

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

3
发表于 2011-7-24 22:56:35 | 只看该作者
滚动画面啥的……用脚本或者事件ms都可以……
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
685
在线时间
579 小时
注册时间
2010-2-15
帖子
1367
4
 楼主| 发表于 2011-7-25 14:21:27 | 只看该作者
忧雪の伤 发表于 2011-7-24 22:56
滚动画面啥的……用脚本或者事件ms都可以……

用滚动画面的话正常行走的速度是可以,但是我要做跑步的速度。用事件做完后会出现主角平安地走一段后开始连续“飞跃”(其实就是卡了)。并且主角的速度跟不上画面卷动的速度(移动速度都改成一样的了)
回复

使用道具 举报

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

5
发表于 2011-7-25 14:25:26 | 只看该作者
315038639 发表于 2011-7-25 14:21
用滚动画面的话正常行走的速度是可以,但是我要做跑步的速度。用事件做完后会出现主角平安地走一段后开始 ...

二次滚动啊……
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
685
在线时间
579 小时
注册时间
2010-2-15
帖子
1367
6
 楼主| 发表于 2011-7-25 14:57:59 | 只看该作者
忧雪の伤 发表于 2011-7-25 14:25
二次滚动啊……

NO,就是单纯的一次性滚动,用的循环。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
354
在线时间
1036 小时
注册时间
2011-5-19
帖子
2098
7
发表于 2011-7-27 11:08:14 | 只看该作者
本帖最后由 MSQ 于 2011-7-27 11:58 编辑

发个脚本。
试着用用
  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. class Game_Map
  13.   attr_accessor   :display_x                # 显示 X 坐标 * 256
  14.   attr_accessor   :display_y                # 显示 Y 坐标 * 256
  15. end
  16. $平滑移动 = nil
  17. class Scene_Map
  18.   alias kds_update update
  19.   def update
  20.     kds_update
  21.     if $平滑移动 != nil
  22.       cen_x = Game_Character::CENTER_X
  23.       cen_y = Game_Character::CENTER_Y
  24.       max_x = ($game_map.width - 17) * 256
  25.       max_y = ($game_map.height - 13) * 256
  26.       display_x = [0, [$平滑移动.x * 256 - cen_x, max_x].min].max
  27.       display_y = [0, [$平滑移动.y * 256 - cen_y, max_y].min].max
  28.       if $game_map.display_x != display_x
  29.          if ($game_map.display_x - display_x).abs < 22
  30.            $game_map.display_x = display_x
  31.          else
  32.            $game_map.display_x += (display_x - $平滑移动.old_display_x)/32
  33.          end
  34.       end
  35.       if $game_map.display_y != display_y
  36.          if ($game_map.display_y - display_y).abs <= 22
  37.             $game_map.display_y = display_y
  38.          else
  39.             $game_map.display_y += (display_y - $平滑移动.old_display_y)/32
  40.          end
  41.       end
  42.       if $game_map.display_x == display_x  and $game_map.display_y == display_y
  43.          $平滑移动.center($平滑移动.x, $平滑移动.y)
  44.          $平滑移动 = nil
  45.       end
  46.       return
  47.     end
  48.   end  
  49. end
  50. class Game_Character
  51.   CENTER_X = (544 / 2 - 16) * 8     # 画面中央的 X 坐标 * 8
  52.   CENTER_Y = (416 / 2 - 16) * 8     # 画面中央的 Y 坐标 * 8
  53.   attr_accessor :old_display_x
  54.   attr_accessor :old_display_y
  55.   attr_accessor :kds_move
  56.   def center(x, y)
  57.     max_x = ($game_map.width - 17) * 256
  58.     max_y = ($game_map.height - 13) * 256
  59.     $game_map.display_x = [0, [x * 256 - CENTER_X, max_x].min].max
  60.     $game_map.display_y = [0, [y * 256 - CENTER_Y, max_y].min].max
  61.   end
  62.   def kds
  63.     @old_display_x = $game_map.display_x
  64.     @old_display_y = $game_map.display_y
  65.     case @id
  66.     when 0
  67.       $平滑移动 = $game_player
  68.     else
  69.       $平滑移动 = $game_map.events[@id]
  70.     end
  71.   end
  72.   def kds_move_start
  73.       @kds_move = ""
  74.   end
  75.   def kds_move_over
  76.       @kds_move = nil
  77.   end
  78.   alias kds_update update
  79.   def update
  80.     last_real_x = @real_x
  81.     last_real_y = @real_y
  82.     kds_update
  83.     if @kds_move != nil
  84.      if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
  85.        $game_map.scroll_down(@real_y - last_real_y)
  86.      end
  87.      if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
  88.        $game_map.scroll_left(last_real_x - @real_x)
  89.      end
  90.      if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
  91.       $game_map.scroll_right(@real_x - last_real_x)
  92.      end
  93.      if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
  94.        $game_map.scroll_up(last_real_y - @real_y)
  95.      end
  96.     end
  97.   end  
  98. end
  99. #==============================================================================
复制代码

点评

发代码注意用代码框  发表于 2011-7-27 11:35
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 21:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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