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

Project1

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

[已经解决] 关于限制主角在地图上的移动范围

[复制链接]

Lv1.梦旅人

梦石
0
星屑
85
在线时间
4 小时
注册时间
2019-1-23
帖子
5
跳转到指定楼层
1
发表于 2022-2-13 17:05:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
想请教一下,如何实现在一张大地图上,让主角只能在当前画面大小的区域内移动?
做的是个动作游戏,想做一个遇到boss了就锁定在当前区域,不能跑出去,只能强行战斗的系统。

Lv1.梦旅人

梦石
0
星屑
85
在线时间
4 小时
注册时间
2019-1-23
帖子
5
5
 楼主| 发表于 2022-2-13 21:08:49 | 只看该作者
alexncf125 发表于 2022-2-13 18:18
插入以下脚本后, 打开3号及4号开关

好的,非常感谢!我去试试!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
4 小时
注册时间
2019-1-23
帖子
5
4
 楼主| 发表于 2022-2-13 21:07:37 | 只看该作者
任小雪 发表于 2022-2-13 17:46
并行,开关
与空气墙这种设定了解一下

对哦,这个不错,作为事件党来说是个好方案,谢谢。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26333
在线时间
5364 小时
注册时间
2016-3-8
帖子
1657
3
发表于 2022-2-13 18:18:42 | 只看该作者
插入以下脚本后, 打开3号及4号开关
  1. #==============================================================================
  2. # ★スクロール禁止 ver1.0 by USK
  3. #------------------------------------------------------------------------------
  4. # ・特定のスイッチがオンのときスクロールを禁止します。
  5. #==============================================================================
  6. =begin
  7. ・21行目のFixDisplayFlagVで設定した番号のスイッチがオンのとき
  8.   縦スクロールが禁止されます。
  9. ・22行目のFixDisplayFlagHで設定した番号のスイッチがオンのとき
  10.   横スクロールが禁止されます。
  11. =end

  12. #==============================================================================
  13. # ■ Game_Map
  14. #==============================================================================

  15. class Game_Map
  16.   #--------------------------------------------------------------------------
  17.   # ● 設定
  18.   #--------------------------------------------------------------------------
  19.   FixDisplayFlagV = 3 #禁止Y轴卷动的开关编号
  20.   FixDisplayFlagH = 4 #禁止X轴卷动的开关编号
  21.   #--------------------------------------------------------------------------
  22.   # ●
  23.   #--------------------------------------------------------------------------
  24.   alias :fix_display_scroll_down  :scroll_down
  25.   alias :fix_display_scroll_left  :scroll_left
  26.   alias :fix_display_scroll_right :scroll_right
  27.   alias :fix_display_scroll_up    :scroll_up
  28.   alias :fix_display_refresh      :refresh
  29.   alias :fix_display_valid?       :valid?
  30.   #--------------------------------------------------------------------------
  31.   # ●
  32.   #--------------------------------------------------------------------------
  33.   def fix_display?
  34.     $game_switches[FixDisplayFlagV] || $game_switches[FixDisplayFlagH]
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ●
  38.   #--------------------------------------------------------------------------
  39.   def need_centering?
  40.     ret = !fix_display? &&
  41.           SceneManager.scene.is_a?(Scene_Map) &&
  42.           @on_fix_display
  43.     @on_fix_display = fix_display?
  44.     ret
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ●
  48.   #--------------------------------------------------------------------------
  49.   def centering
  50.     div = 20
  51.     x = @display_x
  52.     dx = $game_player.x - (Graphics.width / 32 - 1) / 2.0 - x
  53.     dx /= div
  54.     y = @display_y
  55.     dy = $game_player.y - (Graphics.height / 32 - 1) / 2.0 - y
  56.     dy /= div
  57.     div.times do
  58.       set_display_pos(x, y)
  59.       x += dx
  60.       y += dy
  61.       scene = SceneManager.scene
  62.       scene.update_basic
  63.       scene.instance_variable_get(:@spriteset).update
  64.     end
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● リフレッシュ
  68.   #--------------------------------------------------------------------------
  69.   def refresh
  70.     centering if need_centering?
  71.     fix_display_refresh
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 下にスクロール
  75.   #--------------------------------------------------------------------------
  76.   def scroll_down(distance)
  77.     fix_display_scroll_down(distance) unless $game_switches[FixDisplayFlagV]
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 左にスクロール
  81.   #--------------------------------------------------------------------------
  82.   def scroll_left(distance)
  83.     fix_display_scroll_left(distance) unless $game_switches[FixDisplayFlagH]
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● 右にスクロール
  87.   #--------------------------------------------------------------------------
  88.   def scroll_right(distance)
  89.     fix_display_scroll_right(distance) unless $game_switches[FixDisplayFlagH]
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 上にスクロール
  93.   #--------------------------------------------------------------------------
  94.   def scroll_up(distance)
  95.     fix_display_scroll_up(distance) unless $game_switches[FixDisplayFlagV]
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 有効座標判定
  99.   #--------------------------------------------------------------------------
  100.   def valid?(x, y)
  101.     ret = fix_display_valid?(x, y)
  102.     if $game_switches[FixDisplayFlagV]
  103.       ret &&= y >= @display_y && y < @display_y + (Graphics.height >> 5)
  104.     end
  105.     if $game_switches[FixDisplayFlagH]
  106.       ret &&= x >= @display_x && x < @display_x + (Graphics.width >> 5)
  107.     end
  108.     ret
  109.   end
  110. end
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2866
在线时间
446 小时
注册时间
2016-9-26
帖子
1223
2
发表于 2022-2-13 17:46:58 | 只看该作者
并行,开关
与空气墙这种设定了解一下

点评

事实是,我这里有点误判了,唔(习惯了脚本上的直接判定了)  发表于 2022-2-14 15:41
指用于判定的事件要并行。。。当然,也可以用事件触发的法子,看具体吧,不过,并行多了确实卡  发表于 2022-2-14 15:32

评分

参与人数 1星屑 +10 收起 理由
alexncf125 + 10 为啥要用并行??

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 18:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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