Project1
标题:
地图的类Game_Map显示坐标为什么乘128而不是32?
[打印本页]
作者:
jhhuang
时间:
2012-2-7 02:15
标题:
地图的类Game_Map显示坐标为什么乘128而不是32?
本帖最后由 jhhuang 于 2012-2-7 02:16 编辑
#============================================================================
# ■ Game_Map
#------------------------------------------------------------------------------
# 处理地图的类。包含卷动以及可以通行的判断功能。
# 本类的实例请参考 $game_map 。
#============================================================================
class Game_Map
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_accessor :display_x # 显示 X 坐标 * 128
attr_accessor :display_y # 显示 Y 坐标 * 128
复制代码
定义display_x,display_y后.(PS:地图的图块大小为32x32),每次代入坐标变量时却*128
例:
#============================================================================
# ■ Game_Player
#------------------------------------------------------------------------------
# 处理主角的类。事件启动的判定、以及地图的滚动等功能。
# 本类的实例请参考 $game_player。
#============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# ● 恒量
#--------------------------------------------------------------------------
CENTER_X = (320 - 16) * 4 # 画面中央的 X 坐标 * 4
CENTER_Y = (240 - 16) * 4 # 画面中央的 Y 坐标 * 4
#--------------------------------------------------------------------------
# ● 像通到画面中央一样的设置地图的显示位置
#--------------------------------------------------------------------------
def center(x, y)
max_x = ($game_map.width - 20) * 128
max_y = ($game_map.height - 15) * 128
$game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max
$game_map.display_y = [0, [y * 128 - CENTER_Y, max_y].min].max
end
复制代码
大量数据取得坐标后都要*4或*4*32(128)
然后取得地图坐标(x,y)*128之后....
最后取得实际坐标又要/4
# 刷新元件地图
@tilemap.ox = $game_map.display_x / 4
@tilemap.oy = $game_map.display_y / 4
4*32/4=32
乘4又除4感觉存在大量多余数据,为什么不一开始就以32作为对象而选择128?
是写法习惯还是什么问题? dsu_plus_rewardpost_czw
作者:
f26401004
时间:
2012-2-7 12:18
128 / 4 = 32
所以如果不乘以 128 改乘 32 的話,
@tilemap.ox 、 @tilemap.oy 就不用再多除以 4 了。
大概吧...
作者:
awyb3110
时间:
2012-2-7 16:38
@display_x 用于滚动画面
作者:
darkscout3000
时间:
2012-2-7 23:35
是不是因为像素坐标和底层得那个计算不同?(乱猜)
默认脚本其实写的非常烂⋯⋯不要说这个乘4除4了,记得有一行是一大串加减乘除,结果由于ruby四舍五入,其实一个除法就能解决⋯⋯
作者:
过眼云烟
时间:
2012-2-8 14:09
在操作变量里。操作数选为角色的X坐标。。。画面X坐标,
我想大概就是这个问题吧,如果地图太大,如果按照原地图坐标显示一些东西的话,可能那些坐标不在当前画面内,或者显示出来的部分不完全
*128就是为了引入画面XXX坐标吧
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1