赞 | 7 |
VIP | 866 |
好人卡 | 185 |
积分 | 32 |
经验 | 130059 |
最后登录 | 2024-10-29 |
在线时间 | 3618 小时 |
Lv3.寻梦者 双子人
- 梦石
- 0
- 星屑
- 3185
- 在线时间
- 3618 小时
- 注册时间
- 2009-4-4
- 帖子
- 4154
|
本帖最后由 hys111111 于 2012-4-26 12:24 编辑
LZ的意思是想根据人物的大小来判断人物占的格数吗?
例如:一个肥婆,行走图大小是256X256,在游戏中,根据比例,肥婆站的格数是2X2。然后至少要留2个可通行的空间肥婆才可以通行。
脚本已写完……
这个脚本还是有些问题,不过已经修正(我"character"那里居然漏打了一个"s"差点找不到文件)- class Game_Character
- attr_accessor :fat_x #占格x
- attr_accessor :fat_y #占格y
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- alias fat_initialize initialize
- def initialize
- fat_initialize
- @fat_x = 0
- @fat_y = 0
- end
- #--------------------------------------------------------------------------
- # ● 可以通行判定
- # x : X 坐标
- # y : Y 坐标
- # d : 方向 (0,2,4,6,8) ※ 0 = 全方向不能通行的情况判定 (跳跃用)
- #--------------------------------------------------------------------------
- def passable?(x, y, d)
- fx = ((@fat_x - 1)/2).to_i
- fy = ((@fat_y - 1)/2).to_i
- for xx in x-fx..x+fx
- for yy in y-fy..y+fy
- # 求得新的坐标
- new_x = xx + (d == 6 ? 1 : d == 4 ? -1 : 0)
- new_y = yy + (d == 2 ? 1 : d == 8 ? -1 : 0)
- # 坐标在地图以外的情况
- unless $game_map.valid?(new_x, new_y)
- # 不能通行
- return false
- end
- # 穿透是 ON 的情况下
- if @through
- # 可以通行
- return true
- end
- # 移动者的元件无法来到指定方向的情况下
- unless $game_map.passable?(x, y, d, self)
- # 通行不可
- return false
- end
- # 从指定方向不能进入到移动处的元件的情况下
- unless $game_map.passable?(new_x, new_y, 10 - d)
- # 不能通行
- return false
- end
- # 循环全部事件
- for event in $game_map.events.values
- # 事件坐标于移动目标坐标一致的情况下
- if event.x == new_x and event.y == new_y
- # 穿透为 ON
- unless event.through
- # 自己就是事件的情况下
- if self != $game_player
- # 不能通行
- return false
- end
- # 自己是主角、对方的图形是角色的情况下
- if event.character_name != ""
- # 不能通行
- return false
- end
- end
- end
- end
- # 主角的坐标与移动目标坐标一致的情况下
- if $game_player.x == new_x and $game_player.y == new_y
- # 穿透为 ON
- unless $game_player.through
- # 自己的图形是角色的情况下
- if @character_name != ""
- # 不能通行
- return false
- end
- end
- end
- end
- end
- # 可以通行
- return true
- end
- alias fat_update update
- def update
- @fat_x = (Bitmap.new("Graphics/Characters/"+self.character_name).width/128).to_i
- @fat_y = (Bitmap.new("Graphics/Characters/"+self.character_name).height/128).to_i
- fat_update
- end
- end
复制代码 |
|