赞 | 0 |
VIP | 17 |
好人卡 | 0 |
积分 | 1 |
经验 | 1022914 |
最后登录 | 2017-2-4 |
在线时间 | 10 小时 |
Lv1.梦旅人 月下可怜人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 10 小时
- 注册时间
- 2005-11-23
- 帖子
- 4085
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
虽然已修改视口为640 * 480,但实际行走范围仍是遵循544 * 412尺寸的17 * 13,让我们改成20 * 15。
Game_Player类:
CENTER_X = (Standrad::SCREEN_WIDTH / 2 - 16) * 8 # 画面中央的 X 坐标 * 8
CENTER_Y = (Standrad::SCREEN_HEIGHT / 2 - 16) * 8 # 画面中央的 Y 坐标 * 8
#--------------------------------------------------------------------------
# ● 设置画面中央的显示坐标
# x : X 坐标
# y : Y 坐标
#--------------------------------------------------------------------------
def center(x, y)
display_x = x * 256 - CENTER_X # 计算坐标
unless $game_map.loop_horizontal? # 不能横向滚动?
max_x = ($game_map.width - 20) * 256 # 计算最大值
display_x = [0, [display_x, max_x].min].max # 修正坐标
end
display_y = y * 256 - CENTER_Y # 计算坐标
unless $game_map.loop_vertical? # 不能纵向滚动?
max_y = ($game_map.height - 15) * 256 # 计算最大值
display_y = [0, [display_y, max_y].min].max # 修正坐标
end
$game_map.set_display_pos(display_x, display_y) # 更改显示位置
end Game_Map类:
#--------------------------------------------------------------------------
# ● 滚动设置
#--------------------------------------------------------------------------
def setup_scroll
@scroll_direction = 2
@scroll_rest = 0
@scroll_speed = 4
@margin_x = (width - 20) * 256 / 2 # 画面不显示部分横向 / 2
@margin_y = (height - 15) * 256 / 2 # 画面不显示部分纵向 / 2
end
#--------------------------------------------------------------------------
# ● 计算显示远景的 X 坐标
# bitmap : 远景位图
#--------------------------------------------------------------------------
def calc_parallax_x(bitmap)
if bitmap == nil
return 0
elsif @parallax_loop_x
return @parallax_x / 16
elsif loop_horizontal?
return 0
else
w1 = bitmap.width - Standrad::SCREEN_WIDTH
w2 = @map.width * 32 - Standrad::SCREEN_WIDTH
if w1 <= 0 or w2 <= 0
return 0
else
return @parallax_x * w1 / w2 / 8
end
end
end
#--------------------------------------------------------------------------
# ● 计算显示远景的 Y 坐标
# bitmap : 远景位图
#--------------------------------------------------------------------------
def calc_parallax_y(bitmap)
if bitmap == nil
return 0
elsif @parallax_loop_y
return @parallax_y / 16
elsif loop_vertical?
return 0
else
h1 = bitmap.height - Standrad::SCREEN_HEIGHT
h2 = @map.height * 32 - Standrad::SCREEN_HEIGHT
if h1 <= 0 or h2 <= 0
return 0
else
return @parallax_y * h1 / h2 / 8
end
end
end
#--------------------------------------------------------------------------
# ● 向下滚动
# distance : 滚动距离
#--------------------------------------------------------------------------
def scroll_down(distance)
if loop_vertical?
@display_y += distance
@display_y %= @map.height * 256
@parallax_y += distance
else
last_y = @display_y
@display_y = [@display_y + distance, (height - 15) * 256].min
@parallax_y += @display_y - last_y
end
end
#--------------------------------------------------------------------------
# ● 向右滚动
# distance : 滚动距离
#--------------------------------------------------------------------------
def scroll_right(distance)
if loop_horizontal?
@display_x += distance
@display_x %= @map.width * 256
@parallax_x += distance
else
last_x = @display_x
@display_x = [@display_x + distance, (width - 20) * 256].min
@parallax_x += @display_x - last_x
end
end
OK。
|
|