Project1

标题: 请问一个事件需要占用多个格子该怎么办 [打印本页]

作者: dongzi416    时间: 2013-10-11 20:43
标题: 请问一个事件需要占用多个格子该怎么办
如题,例如一个切换场景的路很宽,有3格这么宽,我现在需要做的是接触到3个格子中的任意一个就能切换场景,该如何做到?
还比如,一个人很高,占了10个格子,我只要对10个格子中任意一个格子按确定键就能和他对话,该怎么做最容易?
作者: 戴拿    时间: 2013-10-11 20:49
ctrl C+ctrl V
复制粘贴
我觉得路宽只有3不算多。。。
作者: 紫英晓狼1130    时间: 2013-10-11 20:53
多复制几个事件就可以了
作者: E65    时间: 2013-10-19 13:40
这个我也非常想知道! 比如一只怪占两个...

作者: 天地有正气    时间: 2013-10-19 13:42
把人物放到图块里。
然后设置事件时一个一个拼出来、
作者: chd114    时间: 2013-10-19 18:18
事件形状脚本···不过那个也有缺陷,必须是方形、菱形之类的形状
作者: hys111111    时间: 2013-10-20 10:46
本帖最后由 hys111111 于 2013-10-20 17:27 编辑

我看错了,脚本重写一下。


  1. class Game_Character
  2.   attr_accessor :fat_x #占格x
  3.   attr_accessor :fat_y #占格y
  4.   #--------------------------------------------------------------------------
  5.   # ● 初始化对像
  6.   #--------------------------------------------------------------------------
  7.   alias fat_initialize initialize
  8.   def initialize
  9.     fat_initialize
  10.     @fat_x = 0
  11.     @fat_y = 0
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 可以通行判定
  15.   #     x : X 坐标
  16.   #     y : Y 坐标
  17.   #     d : 方向 (0,2,4,6,8)  ※ 0 = 全方向不能通行的情况判定 (跳跃用)
  18.   #--------------------------------------------------------------------------
  19.   def passable?(x, y, d)
  20.     fx = ((@fat_x - 1)/2).to_i
  21.     fy = ((@fat_y - 1)/2).to_i
  22.     for xx in x-fx..x+fx
  23.      for yy in y-fy..y+fy
  24.       # 求得新的坐标
  25.       new_x = xx + (d == 6 ? 1 : d == 4 ? -1 : 0)
  26.       new_y = yy + (d == 2 ? 1 : d == 8 ? -1 : 0)
  27.       # 坐标在地图以外的情况
  28.       unless $game_map.valid?(new_x, new_y)
  29.         # 不能通行
  30.         return false
  31.       end
  32.       # 穿透是 ON 的情况下
  33.       if @through
  34.         # 可以通行
  35.         return true
  36.       end
  37.       # 移动者的元件无法来到指定方向的情况下
  38.       unless $game_map.passable?(x, y, d, self)
  39.         # 通行不可
  40.         return false
  41.       end
  42.       # 从指定方向不能进入到移动处的元件的情况下
  43.       unless $game_map.passable?(new_x, new_y, 10 - d)
  44.         # 不能通行
  45.         return false
  46.       end
  47.       # 循环全部事件
  48.       for event in $game_map.events.values
  49.         # 事件坐标于移动目标坐标一致的情况下
  50.         if event.x == new_x and event.y == new_y
  51.           # 穿透为 ON
  52.           unless event.through
  53.             # 自己就是事件的情况下
  54.             if self != $game_player
  55.               # 不能通行
  56.               return false
  57.             end
  58.             # 自己是主角、对方的图形是角色的情况下
  59.             if event.character_name != ""
  60.               # 不能通行
  61.               return false
  62.             end
  63.           end
  64.         end
  65.       end
  66.       # 主角的坐标与移动目标坐标一致的情况下
  67.       if $game_player.x == new_x and $game_player.y == new_y
  68.         # 穿透为 ON
  69.         unless $game_player.through
  70.           # 自己的图形是角色的情况下
  71.           if @character_name != ""
  72.             # 不能通行
  73.             return false
  74.           end
  75.         end
  76.       end
  77.      end
  78.     end
  79.     # 可以通行
  80.     return true
  81.   end
  82.   alias fat_update update
  83.   def update
  84.     @fat_x = (Bitmap.new("Graphics/Characters/"+self.character_name).width/128).to_i
  85.     @fat_y = (Bitmap.new("Graphics/Characters/"+self.character_name).height/128).to_i
  86.     fat_update
  87.   end
  88. end
复制代码
可以用下肥婆脚本。

它是根据行走图的大小判断格数的。
作者: imsy    时间: 2013-10-20 10:53
本帖最后由 imsy 于 2013-10-20 10:55 编辑

如果不需要移动的话,用空白的地形标志铺在第三层,然后判断之
仅适用于很宽的路切换场景




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