查看: 15441|回复: 36

[原创发布] 【RMXP】仿卫星地图大地图【懒人莫用】

[复制链接]

万兽

梦石
0
星屑
602
在线时间
2271 小时
注册时间
2006-11-4
回帖
4701

贵宾

发表于 2013-3-6 01:15:34 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 弗雷德 于 2013-5-25 12:56 编辑

功能其实很简单,就是一个大地图类,脚本还不到200行。但是要配合美工才能有比较好的效果,所以说懒人勿用。

地图需要自己绘制,小地图也是,地名也是,聚焦坐标需要自己计算……总之懒人勿用!

效果大概就是:玩家按左右移动竖线,按上下移动横线,当纵贯线的交点坐标与最近的圆点距离在X值之内时,会自动聚焦,

按下确定键进行场所移动。设置方法在脚本都有写。


001.jpg



002.jpg



下面是俺游戏中的效果,总之美化靠自己:懒人勿用

003.jpg


下载地址:戳这里

提取码:znle

俺很少发布技术,因为俺的东西都需要美工的配合,而且都不是插件类。

最后:懒人勿用!

点评

帮你改了一个版本看看  发表于 2013-3-8 22:07
话说有点像游戏王TF系列的效果,大赞。另外……那个酒池肉林亮了……  发表于 2013-3-7 09:05
能用站內附件上傳不?迅雷我動不了啊...TUT  发表于 2013-3-6 21:31
格斗类3D游戏 比如虐杀原型之类的 倒是经常看到这类地图功能 但是RM这样的2D RPG很少见这种功能呢~  发表于 2013-3-6 20:21
以前只看到只显示大地图,没有角色位置标注的  发表于 2013-3-6 13:01

评分

参与人数 11星屑 +301 收起 理由
牛肉面 + 100 熊叔威武啊!
【凌】 + 4 精品文章
aaalbx + 12 有种Psycho Pass的感觉……
国猪eu + 7 很霸气的脚本
y610407721 + 12 这个用来做解密游戏不错也~
紫英晓狼1130 + 6 18400
wingzeroplus + 12 精品文章
月下耶鲁夫 + 66 必须塞糖
kefafa + 20 正好想要,瞌睡遇见了枕头~
芯☆淡茹水 + 12 精品文章

查看全部评分

万兽

梦石
0
星屑
602
在线时间
2271 小时
注册时间
2006-11-4
回帖
4701

贵宾

 楼主| 发表于 2013-3-6 12:44:35 | 显示全部楼层
这么说吧,俺以前上班的地儿天天路过金钟墓园,印象不深刻不行啊。

点评

有VA的就好啦  发表于 2013-6-17 17:11
回复

使用道具 举报

梦石
0
星屑
211
在线时间
905 小时
注册时间
2010-9-6
回帖
3138
发表于 2013-3-6 15:26:34 | 显示全部楼层
这个挺不错的,能否请教一下,大地图是用什么方法绘制的呢?
回复

使用道具 举报

梦石
0
星屑
1857
在线时间
2678 小时
注册时间
2010-6-26
回帖
3008

开拓者整合系统大赛RMVX达人剧作品鉴家

发表于 2013-3-6 19:45:28 | 显示全部楼层
“懒人勿用”戳中萌点~
来给大叔顶一下,感觉很有创意

点评

美国片里经常出现的场景……  发表于 2013-3-6 19:50

      情人怨遥夜,竟夕起相思
回复

使用道具 举报

梦石
0
星屑
50
在线时间
48 小时
注册时间
2010-8-10
回帖
39
发表于 2013-3-8 19:30:50 | 显示全部楼层
有点像使命召唤的加载动画效果
回复

使用道具 举报

梦石
0
星屑
47
在线时间
976 小时
注册时间
2011-4-30
回帖
846
发表于 2013-3-8 19:37:40 | 显示全部楼层
本帖最后由 羞射了 于 2013-3-8 22:05 编辑

额,和我想象得不太一样啊,我记得那个啥夜啥曲的是不是也有类似的效果??我想象中是这个样子的。

[pre lang="txt" line="1"]ALLMAP = 1 #记录已开启地图的变量的ID。
FR  = 20 #聚焦半径,当交叉点的坐标离地图目标距离在20个像素以内时,会自动移动靠近。
module SATEMAP
  #定义目标地图,举例:
  #TAGMAP[1] = [400,139,14,4,8]
  #1表示地图ID,400和139表示点在大地图上的坐标,14和4表示场所移动后的坐标。8是朝向。
  #也就是说,当横轴与纵轴的交叉点坐标为400,139时,玩家按下确定键,角色就会面朝上移动到
  #1号地图坐标为14,4的地点。
  TAGMAP = []
  TAGMAP[0] = [0,0,0,0,0,0]
  TAGMAP[1] = [0,0,0,0,0,0]
  TAGMAP[2] = [97,149,1,7,6,2]#森林,面朝右
  TAGMAP[3] = [319,270,1,22,6,3]#山村,面朝右
  TAGMAP[4] = [209,97,5,28,8,4]#沉默,面朝上
  TAGMAP[5] = [565,328,10,1,2,5]#悬崖,面朝下
  TAGMAP[6] = [505,84,1,9,6,6]#极北,面朝右
  TAGMAP[7] = [395,136,1,9,6,7]#体内,面朝右
  TAGMAP[8] = [477,206,20,30,8,8]#海港,面朝上
  TAGMAP[9] = [453,341,11,32,8,9]#深渊,面朝上
end
#==============================================================================
# ■ Scene_Satellite
#------------------------------------------------------------------------------
#  处理卫星地图画面
#==============================================================================
class Scene_Satellite
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    @allmap_id = $game_variables[ALLMAP]
    @focus = 0
    @map_id = $game_map.map_id
   
    @Wait = 0
    @scroll_time = 8
    @m_real   = [nil,nil]
    @m_target = [nil,nil]
    @m_gap    = [nil,nil]
    @tgm = SATEMAP::TAGMAP.dup
    while @tgm[0][5] == 0
      @tgm.shift
    end
    @index = @tgm.index(SATEMAP::TAGMAP[@map_id])
  end
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    # 创建背景
    @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/019-Whorl01" )
    # 主循环
    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
  end
  
  def auto_scroll
    for i in 0..1
      @m_real = (@wait > 1)?(@m_target - @m_gap * (@wait ** 2) / (@scroll_time ** 2)):@m_target
    end
    @mm_y.x,@mm_x.y = @m_real[0],@m_real[1]
    @wait -= 1
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    if @wait > 0
      auto_scroll
      return
    end
   
    if @map_id != @tgm[@index][5]
     @map_id = @tgm[@index][5]
    @mm_icon.bitmap = Bitmap.new("Graphics/Systems/Icon/"+@map_id.to_s)
    @mm_name.bitmap = Bitmap.new("Graphics/Systems/Name/"+@map_id.to_s)
    end
  #  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)
     old = @tgm[@index]
     @tgm.sort!{|a,b| a[0] - b[0]}
     @index = @tgm.index(old)
     @wait = @scroll_time
     @m_real[0],@m_real[1] = @tgm[@index][0],@tgm[@index][1]
     if @index == 0
      x,y = @tgm[@tgm.size - 1][0],@tgm[@tgm.size - 1][1]
      @index = @tgm.size - 1
    else
      x,y = @tgm[@index - 1][0],@tgm[@index - 1][1]
      @index = @index - 1
    end
     
    @m_target = [x,y]
    for i in 0..1
      @m_gap = @m_target - @m_real
    end
      
  end
#========================================================
    if Input.press?(Input::RIGHT)
     old = @tgm[@index]
     @tgm.sort!{|a,b| a[0] - b[0]}
     @index = @tgm.index(old)
     @wait = @scroll_time
     @m_real[0],@m_real[1] = @tgm[@index][0],@tgm[@index][1]
     if @index == @tgm.size - 1
      x,y = @tgm[0][0],@tgm[0][1]
      @index = 0
    else
      x,y = @tgm[@index + 1][0],@tgm[@index + 1][1]
      @index = @index + 1
    end
     
    @m_target = [x,y]
    for i in 0..1
      @m_gap = @m_target - @m_real
    end

  end
#========================================================

#========================================================
    if Input.press?(Input::UP)
     old = @tgm[@index]
     @tgm.sort!{|a,b| a[1] - b[1]}
     @index = @tgm.index(old)
     @wait = @scroll_time
     @m_real[0],@m_real[1] = @tgm[@index][0],@tgm[@index][1]
     if @index == 0
      x,y = @tgm[@tgm.size - 1][0],@tgm[@tgm.size - 1][1]
      @index = @tgm.size - 1
    else
      x,y = @tgm[@index - 1][0],@tgm[@index - 1][1]
      @index = @index - 1
    end
     
    @m_target = [x,y]
    for i in 0..1
      @m_gap = @m_target - @m_real
    end
      
  end
#========================================================
    if Input.press?(Input::DOWN)
     old = @tgm[@index]
     @tgm.sort!{|a,b| a[1] - b[1]}
     @index = @tgm.index(old)
     @wait = @scroll_time
     @m_real[0],@m_real[1] = @tgm[@index][0],@tgm[@index][1]
     if @index == @tgm.size - 1
      x,y = @tgm[0][0],@tgm[0][1]
      @index = 0
    else
      x,y = @tgm[@index + 1][0],@tgm[@index + 1][1]
      @index = @index + 1
    end
     
    @m_target = [x,y]
    for i in 0..1
      @m_gap = @m_target - @m_real
    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_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)

  end
  
  end

end[/pre]
湿滑落式骑!
回复

使用道具 举报

万兽

梦石
0
星屑
602
在线时间
2271 小时
注册时间
2006-11-4
回帖
4701

贵宾

 楼主| 发表于 2013-3-9 07:20:28 | 显示全部楼层
本帖最后由 弗雷德 于 2013-3-9 07:21 编辑
羞射了 发表于 2013-3-8 19:37
额,和我想象得不太一样啊,我记得那个啥夜啥曲的是不是也有类似的效果??我想象中是这个样子的。

ALLMAP ...

俺这个是模仿丧尸危机的,跟你那个效果不大一样呃。
回复

使用道具 举报

梦石
0
星屑
3905
在线时间
1972 小时
注册时间
2013-1-3
回帖
9146
发表于 2013-3-9 08:09:34 | 显示全部楼层
这是熊叔的技术~才知道~
顶一下~
看起来效果超棒~
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复

使用道具 举报

梦石
0
星屑
50
在线时间
92 小时
注册时间
2011-9-4
回帖
59
发表于 2013-3-9 08:29:06 | 显示全部楼层
Nice!
回复

使用道具 举报

精灵族の天使<

梦石
0
星屑
1712
在线时间
3039 小时
注册时间
2007-3-16
回帖
33092

开拓者贵宾

发表于 2013-3-9 11:10:53 | 显示全部楼层
我想起了幻世录2的那种大地图风格哦呵呵呵……
我还以为卫星地图什么的就类似于我以前那种呢。

点评

这么一说那地图确实很像。  发表于 2013-3-9 11:33
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部