赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 13929 |
最后登录 | 2019-3-12 |
在线时间 | 216 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 80
- 在线时间
- 216 小时
- 注册时间
- 2011-9-17
- 帖子
- 151
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
下面是我在论坛找的卫星地图脚本。
有更改了两个地方。
第一个地方是我想在移动的时候播放一个动画,移动结束后右播放一个动画(就像口袋妖怪飞行那种)。但我不会用用脚本写,所以我改成了事件执行。
第二个地方是我的地图大小不是640*480,用原脚本的情况下,剩余位置是黑色。我加了两段脚本,改成了透明。
在脚本这块我是新手,所以有一个功能想求论坛的大大帮我实现。
这个脚本,当没有选择地方,地图和名字都还会在屏幕上。
我想优化这个功能再使用。
改成只选定地点时,图片和文字才会出现,离开之后,图片和文字消失。希望有大大帮忙!- ALLMAP = 1 #记录已开启地图的变量的ID。
- FR = 20 #聚焦半径,当交叉点的坐标离地图目标距离在20个像素以内时,会自动移动靠近。
- module SATEMAP
- #定义目标地图,举例:
- #TAGMAP[1] = [400,139,14,4,8]
- #意思:
- #TAGMAP[地图ID] = [卫星的x点,卫星的y点,要飞行地图的x点,要飞行地图的y点,面向]
- #1表示,400和139表示点在大地图上的坐标,14和4表示场所移动后的坐标。8是朝向。
- #也就是说,当横轴与纵轴的交叉点坐标为400,139时,玩家按下确定键,角色就会面朝上移动到
- #1号地图坐标为14,4的地点。
- TAGMAP = []
- TAGMAP[2] = [168,296,16,16,2]#真新镇,面朝下
- end
- #==============================================================================
- # ■ Scene_Satellite
- #------------------------------------------------------------------------------
- # 处理卫星地图画面
- #==============================================================================
- class Scene_Satellite
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize
- @allmap_id = $game_variables[ALLMAP]
- @focus = 0
- @map_id = $game_map.map_id
- @tag_lock = false
- end
- #--------------------------------------------------------------------------
- # ● 主处理
- #--------------------------------------------------------------------------
- def main
- screen = Spriteset_Map.new
- # 创建背景
- @back = Sprite.new
- @back.bitmap = Bitmap.new("Graphics/Systems/back")
- # 创建X轴
- @mm_x = Sprite.new
- @mm_x.bitmap = Bitmap.new("Graphics/Systems/mm_x")
- @mm_x.y = SATEMAP::TAGMAP[@map_id][1]
- # 创建Y轴
- @mm_y = Sprite.new
- @mm_y.bitmap = Bitmap.new("Graphics/Systems/mm_y")
- @mm_y.x = SATEMAP::TAGMAP[@map_id][0]
- # 创建地点缩略图
- @mm_icon = Sprite.new
- @mm_icon.bitmap = Bitmap.new("Graphics/Systems/Icon/"+@map_id.to_s)
- @mm_icon.x = 15
- @mm_icon.y = 232
- # 创建地名
- @mm_name = Sprite.new
- @mm_name.bitmap = Bitmap.new("Graphics/Systems/Name/"+@map_id.to_s)
- @mm_name.x = 60
- @mm_name.y = 380
- # 执行过度
- Graphics.transition(30, "Graphics/Transitions/卫星" )
- # 主循环
- loop do
- # 刷新游戏画面
- Graphics.update
- # 刷新输入信息
- Input.update
- # 刷新画面
- update
- # 如果画面切换就中断循环
- if $scene != self
- break
- end
- end
- # 装备过渡
- Graphics.freeze
- # 释放窗口
- @back.dispose
- @mm_x.dispose
- @mm_y.dispose
- @mm_name.dispose
- @mm_icon.dispose
- screen.dispose
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面
- #--------------------------------------------------------------------------
- def update
- @mm_icon.bitmap = Bitmap.new("Graphics/Systems/Icon/"+@map_id.to_s)
- @mm_name.bitmap = Bitmap.new("Graphics/Systems/Name/"+@map_id.to_s)
- disjudge
- # 按下 X 键的情况下
- if Input.trigger?(Input::B)
- # 演奏取消 SE
- $game_system.se_play($data_system.cancel_se)
- $scene = Scene_Map.new
- return
- end
- #值可以随便定,但是要比校正范围小一定的值。
- if Input.press?(Input::LEFT)
- if @mm_y.x>0
- @mm_y.x -= 3
- end
- end
- if Input.press?(Input::RIGHT)
- if @mm_y.x<640
- @mm_y.x += 3
- end
- end
- if Input.press?(Input::UP)
- if @mm_x.y>0
- @mm_x.y -= 3
- end
- end
- if Input.press?(Input::DOWN)
- if @mm_x.y<480
- @mm_x.y += 3
- end
- end
- if Input.trigger?(Input::C)
- if @tag_lock
- $game_system.se_play($data_system.decision_se)
- #$game_screen.start_tone_change(Tone.new(-255,-255,-255,0), 0)
- $scene = Scene_Map.new
- $game_variables[24] = SATEMAP::TAGMAP[@map_id][2]
- $game_variables[25] = SATEMAP::TAGMAP[@map_id][3]
- $game_temp.common_event_id = 951
- #$game_temp.player_transferring = true
- #$game_temp.player_new_map_id = @map_id
- #$game_temp.player_new_x=SATEMAP::TAGMAP[@map_id][2]
- #$game_temp.player_new_y=SATEMAP::TAGMAP[@map_id][3]
- #$game_temp.player_new_direction = SATEMAP::TAGMAP[@map_id][4]
- #$game_screen.start_tone_change(Tone.new(0,0,0,0), 10)
- else
- $game_system.se_play($data_system.buzzer_se)
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 实时判断
- #--------------------------------------------------------------------------
- def disjudge
- for i in @allmap_id
- ax = SATEMAP::TAGMAP[i][0]
- ay = SATEMAP::TAGMAP[i][1]
- x = @mm_y.x
- y = @mm_x.y
- f = FR**2
- dis = (x-ax)**2 + (y-ay)**2
- #自动校正范围,默认16个像素,根据大地图来定。
- if dis <= f
- if x> ax
- @mm_y.x-=1
- elsif x< ax
- @mm_y.x+=1
- end
- if y> ay
- @mm_x.y-=1
- elsif y< ay
- @mm_x.y+=1
- end
- @map_id = i
- end
- dis2 = (x-SATEMAP::TAGMAP[@map_id][0])**2 + (y-SATEMAP::TAGMAP[@map_id][1])**2
- if dis2 < f
- @tag_lock = true
- else
- @tag_lock = false
- end
- end
- end
- end
复制代码 |
|