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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
帖子
203
跳转到指定楼层
1
发表于 2013-8-30 20:36:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

*128部份 :
Game_Map
RUBY 代码复制
  1. attr_accessor :display_x                # 显示 X 坐标 * 128
  2.   attr_accessor :display_y                # 显示 Y 坐标 * 128

Game_Character 1
RUBY 代码复制
  1. attr_reader   :x                        # 地图 X 坐标 (理论坐标)
  2.   attr_reader   :y                        # 地图 Y 坐标 (理论坐标)
  3.   attr_reader   :real_x                   # 地图 X 坐标 (实际坐标 * 128)
  4.   attr_reader   :real_y                   # 地图 Y 坐标 (实际坐标 * 128)

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 移动中判定
  3.   #--------------------------------------------------------------------------
  4.   def moving?
  5.     # 如果在移动中理论坐标与实际坐标不同
  6.     return (@real_x != @x * 128 or @real_y != @y * 128)
  7.   end



>=384部份 :
Sprite_Character
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 更新画面
  3.   #--------------------------------------------------------------------------
  4.   def update
  5.     super
  6.     # 元件 ID、文件名、色相与现在的情况存在差异的情况下
  7.     if @tile_id != @character.tile_id or
  8.        @character_name != @character.character_name or
  9.        @character_hue != @character.character_hue
  10.       # 记忆元件 ID 与文件名、色相
  11.       @tile_id = @character.tile_id
  12.       @character_name = @character.character_name
  13.       @character_hue = @character.character_hue
  14.       # 元件 ID 为有效值的情况下
  15.       if @tile_id >= 384
  16.         self.bitmap = RPG::Cache.tile($game_map.tileset_name,
  17.           @tile_id, @character.character_hue)
  18.         self.src_rect.set(0, 0, 32, 32)
  19.         self.ox = 16
  20.         self.oy = 32
  21.       # 元件 ID 为无效值的情况下
  22.       else
  23.         self.bitmap = RPG::Cache.character(@character.character_name,
  24.           @character.character_hue)
  25.         @cw = bitmap.width / 4
  26.         @ch = bitmap.height / 4
  27.         self.ox = @cw / 2
  28.         self.oy = @ch
  29.       end
  30.     end
  31.     # 设置可视状态
  32.     self.visible = (not @character.transparent)
  33.     # 图形是角色的情况下
  34.     if @tile_id == 0
  35.       # 设置传送目标的矩形
  36.       sx = @character.pattern * @cw
  37.       sy = (@character.direction - 2) / 2 * @ch
  38.       self.src_rect.set(sx, sy, @cw, @ch)
  39.     end
  40.     # 设置脚本的坐标
  41.     self.x = @character.screen_x
  42.     self.y = @character.screen_y
  43.     self.z = @character.screen_z(@ch)
  44.     # 设置不透明度、合成方式、茂密
  45.     self.opacity = @character.opacity
  46.     self.blend_type = @character.blend_type
  47.     self.bush_depth = @character.bush_depth
  48.     # 动画
  49.     if @character.animation_id != 0
  50.       animation = $data_animations[@character.animation_id]
  51.       animation(animation, true)
  52.       @character.animation_id = 0
  53.     end
  54.   end
  55. end



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

点评

128就不清楚是怎么回事了  发表于 2013-8-30 22:14

Lv3.寻梦者

梦石
0
星屑
2749
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

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

点评

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

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
帖子
203
4
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
帖子
203
5
 楼主| 发表于 2013-8-31 11:35:05 | 只看该作者
无解了吗...= =
@弗雷德 结帖吧...

点评

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

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12269
在线时间
21814 小时
注册时间
2010-10-24
帖子
308
6
发表于 2013-8-31 11:49:29 | 只看该作者
一个元件32*32像素,整个屏幕640*480像素,一个默认的地图尺寸刚好是20*15
所以在一个屏幕里,地图(x,y)坐标是多少,屏幕(real_x,real_y)坐标就是地图坐标*128
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 15:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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