查看: 1993|回复: 5

[已经过期] 关于*128及>=384

[复制链接]
梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
回帖
155
发表于 2013-8-30 20:36:57 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 九靈 于 2013-8-30 20:50 编辑

*128部份 :
Game_Map
[pre lang="ruby" line="24"]  attr_accessor :display_x                # 显示 X 坐标 * 128
  attr_accessor :display_y                # 显示 Y 坐标 * 128
[/pre]
Game_Character 1
[pre lang="ruby" line="13"]  attr_reader   :x                        # 地图 X 坐标 (理论坐标)
  attr_reader   :y                        # 地图 Y 坐标 (理论坐标)
  attr_reader   :real_x                   # 地图 X 坐标 (实际坐标 * 128)
  attr_reader   :real_y                   # 地图 Y 坐标 (实际坐标 * 128)
[/pre]
[pre lang="ruby" line="69"]  #--------------------------------------------------------------------------
  # ● 移动中判定
  #--------------------------------------------------------------------------
  def moving?
    # 如果在移动中理论坐标与实际坐标不同
    return (@real_x != @x * 128 or @real_y != @y * 128)
  end
[/pre]


>=384部份 :
Sprite_Character
[pre lang="ruby" line="23"]  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    # 元件 ID、文件名、色相与现在的情况存在差异的情况下
    if @tile_id != @character.tile_id or
       @character_name != @character.character_name or
       @character_hue != @character.character_hue
      # 记忆元件 ID 与文件名、色相
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      # 元件 ID 为有效值的情况下
      if @tile_id >= 384
        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
          @tile_id, @character.character_hue)
        self.src_rect.set(0, 0, 32, 32)
        self.ox = 16
        self.oy = 32
      # 元件 ID 为无效值的情况下
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character.character_hue)
        @cw = bitmap.width / 4
        @ch = bitmap.height / 4
        self.ox = @cw / 2
        self.oy = @ch
      end
    end
    # 设置可视状态
    self.visible = (not @character.transparent)
    # 图形是角色的情况下
    if @tile_id == 0
      # 设置传送目标的矩形
      sx = @character.pattern * @cw
      sy = (@character.direction - 2) / 2 * @ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
    # 设置脚本的坐标
    self.x = @character.screen_x
    self.y = @character.screen_y
    self.z = @character.screen_z(@ch)
    # 设置不透明度、合成方式、茂密
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    # 动画
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      animation(animation, true)
      @character.animation_id = 0
    end
  end
end
[/pre]


问题 :
1. 为何实际坐标要乘 * 128?
2. 37行 【@tile_id >= 384】 为什么>= 384才是有效值? 而else 为无效?

点评

128就不清楚是怎么回事了  发表于 2013-8-30 22:14
梦石
0
星屑
2826
在线时间
2634 小时
注册时间
2013-1-16
回帖
5453

贵宾

发表于 2013-8-30 21:18:36 来自手机 | 显示全部楼层
1.地图的每一个图块应该就是相差128个单位,具体什么单位我不清楚了,所以地图坐标每相差1就要乘128。
2.这应该很好理解,地图的图块的id在保存工程的时候,就是一个>=384的数,如果小于,就没办法找到相应的图块。

点评

每一个图块不是长宽32个单位吗?  发表于 2013-8-30 21:47
回复

使用道具 举报

梦石
0
星屑
122
在线时间
552 小时
注册时间
2012-8-18
回帖
1392
发表于 2013-8-30 21:18:49 | 显示全部楼层
1.不清楚为何是128=-=不是32么=-= 貌似是因为xy是主角在地图上的坐标,real_xy就是主角图像在屏幕上的坐标=-=
2.384以前是自动元件,剩下的才是普通的图块
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复

使用道具 举报

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
回帖
155
 楼主| 发表于 2013-8-30 21:41:50 | 显示全部楼层
本帖最后由 九靈 于 2013-8-30 21:45 编辑
无脑之人 发表于 2013-8-30 21:18
1.不清楚为何是128=-=不是32么=-= 貌似是因为xy是主角在地图上的坐标,real_xy就是主角图像在屏幕上的坐标= ...


128是32的4倍啊...
4倍哪来的...


话说你什么时候变成喵星人了...

点评

1.不知道 2.不知道=-=  发表于 2013-8-30 21:57
回复

使用道具 举报

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
回帖
155
 楼主| 发表于 2013-8-31 11:35:05 | 显示全部楼层
无解了吗...= =
@弗雷德 结帖吧...

点评

128是默认行走图的宽,384是自动元件的宽,这里计算不会采用切割后的数值。  发表于 2013-8-31 11:44
回复

使用道具 举报

梦石
0
星屑
14555
在线时间
22062 小时
注册时间
2010-10-24
回帖
302
发表于 2013-8-31 11:49:29 | 显示全部楼层
一个元件32*32像素,整个屏幕640*480像素,一个默认的地图尺寸刚好是20*15
所以在一个屏幕里,地图(x,y)坐标是多少,屏幕(real_x,real_y)坐标就是地图坐标*128
噫
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部