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

Project1

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

[已经解决] 有没有什么好点办法实现踏门就撩开黑雾。。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
140 小时
注册时间
2009-10-28
帖子
103
跳转到指定楼层
1
发表于 2014-10-14 19:02:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
大家儿时不知道有木有玩过 FC的勇者斗恶龙呢??   没玩过也不打紧啦。。。 举个栗子



如此坑图所示   有一天勇者从1进入这个洞穴  。。。。。。。   忽然! 他发现 除了自己所在的1  是看的见的  其他地方 2   和 3  都是黑的。。   当踏入2里的图块时   整个 2  也变成可见的啦。。。   当然 走到3  3 也变成可见的啦。。。    勇者斗恶龙里 当你走到2时 1就变成黑的了  意思就是 只有2是可见的。。   不过我倒不想这样   我只是想加深下游戏的探索性。。。走到2之后 以后2就都是可见的了    不想让整个图都直接呈现出来  目前我想到的办法只有  把整个2都做个事件  就是黑色的图块  。。  你走上去  图块就回复正常啦。  不过这样的话  弄满图事件好不爽啊 而且好像还加大了  事件难度(比方说 我要在2里做点事件 却还要考虑 黑雾问题。。。。)。。   

当然这是举个栗子   我只是想加强下探索性   有没有相对好些的办法呢

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

2
发表于 2014-10-14 19:48:28 | 只看该作者
嗯,你可以试试我想到的一个小办法,就是用图片遮罩。事件来决定是否显示某张遮罩图,你会比较辛苦。自己看着办吧。(ULDS无限图层系统也许可以降低一些工作量。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
122 小时
注册时间
2010-12-23
帖子
179
3
发表于 2014-10-14 20:27:06 | 只看该作者
本帖最后由 双叶GL 于 2014-10-14 20:37 编辑

好像,添加行走图,然后固定朝向
最上方显示允许穿透
可以模拟出来呢



建议用32*32然后3的倍数作为遮盖,不然会自动平衡
所以用96*96就可以了


另外想要用脚本做的话,可以做到,具体方法,我线占坑

{J7EZ69GGNFNSCP(VZO([email protected] (328.67 KB, 下载次数: 32)

{J7EZ69GGNFNSCP(VZO(N@X.jpg

G%`@{481]TOZK`FM`X~_%WJ.png (72.13 KB, 下载次数: 33)

G%`@{481]TOZK`FM`X~_%WJ.png

M277)F0J)U3@@09OX7}RH13.jpg (456.49 KB, 下载次数: 33)

M277)F0J)U3@@09OX7}RH13.jpg

点评

哦 哦 。。 刚看到 你后编辑的。。 感觉 还不错的样子 我试试  发表于 2014-10-14 20:47
没太懂。。。  发表于 2014-10-14 20:40
- -作图太麻烦了,又是PS又是素材的
还不如玩游戏实际- -嗯嗯,娱乐就好!!

=====================
神马都简单,但是需要时间&精力,虽然我时间很多,但是专注一样东西的精力- -
====================
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
140 小时
注册时间
2009-10-28
帖子
103
4
 楼主| 发表于 2014-10-14 20:39:46 | 只看该作者
VIPArcher 发表于 2014-10-14 19:48
嗯,你可以试试我想到的一个小办法,就是用图片遮罩。事件来决定是否显示某张遮罩图,你会比较辛苦。自己看 ...

嗯。。。。应该比我想到办法好使。。    看来用事件解决这样的问题 似乎还是比较费力啊。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22943
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
5
发表于 2014-10-14 20:57:36 | 只看该作者
本帖最后由 tseyik 于 2014-10-15 10:12 编辑

http://blog.livedoor.jp/kurement ... hives/32091238.html


範例

把ZERO_REGION_SEE_MODE = 0改成1

Project27.rar (312.45 KB, 下载次数: 91)
  1. #==============================================================================
  2. # ■リージョン可視領域設定 for RGSS3 Ver1.02-β
  3. # □作成者 kure
  4. #===============================================================================

  5. module KURE
  6.   module RegionSee
  7.     REGION_SEE = []
  8.     NORMAL_REGION = []
  9.     NORMAL_MAP = []
  10.    
  11.     #適用區域設定
  12.       #設定以角色中心可見的範囲(図塊)。
  13.       AREA_X = 30
  14.       AREA_Y = 30
  15.       
  16.       #設定不適用這設定之MAPID設定
  17.       NORMAL_MAP = []
  18.    
  19.     #通常區域
  20.     #已設置區設置不適用於
  21.     NORMAL_REGION = []
  22.    
  23.     ##設置多個區域
  24.     #REGION_SEE[區域編號]=和[可見區域]
  25.     REGION_SEE[6] = [1,2]
  26.     REGION_SEE[7] = [2,3]
  27.     REGION_SEE[8] = [2,4]
  28.     REGION_SEE[9] = [4,5]
  29.    
  30.     #未設置區域的處理方法
  31.    
  32.       #表示設定
  33.       # 0 = 進入己設定区域後変不可見
  34.       # 1 = 總是可見
  35.       ZERO_REGION_SEE_MODE = 0
  36.    
  37.       #動作処理
  38.       # 0 = 他のリージョンと同じ動作(リージョン未設定のみ見える)
  39.       # 1 = 全てのマスが見える
  40.       ZERO_REGION_ACT_MODE = 1
  41.    
  42.   end
  43. end


  44. #==============================================================================
  45. # ■ Sprite_Character
  46. #==============================================================================
  47. class Sprite_Character < Sprite_Base
  48.   #--------------------------------------------------------------------------
  49.   # ● その他の更新(再定義)
  50.   #--------------------------------------------------------------------------
  51.   def update_other
  52.     self.opacity = @character.opacity
  53.     self.blend_type = @character.blend_type
  54.     self.bush_depth = @character.bush_depth
  55.     self.visible = [email protected] && [email protected]
  56.   end
  57. end

  58. #==============================================================================
  59. # ■ Game_Map
  60. #==============================================================================
  61. class Game_Map
  62.   attr_accessor :keep_map_data            # マップデータ保存
  63.   #--------------------------------------------------------------------------
  64.   # ● セットアップ(エイリアス再定義)
  65.   #--------------------------------------------------------------------------
  66.   alias k_transcolor_before_setup setup
  67.   def setup(map_id)
  68.     k_transcolor_before_setup(map_id)
  69.     @keep_map_data = @map.data.clone
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 指定座標にあるタイル ID の取得(エイリアス再定義)
  73.   #--------------------------------------------------------------------------
  74.   alias k_transcolor_before_tile_id tile_id
  75.   def tile_id(x, y, z)
  76.     if @keep_map_data
  77.       return @keep_map_data[x, y, z] if @keep_map_data[x, y, z]
  78.       return 0 unless @keep_map_data[x, y, z]
  79.     end
  80.    
  81.     k_transcolor_before_tile_id(x, y, z)
  82.   end
  83. end

  84. #==============================================================================
  85. # ■ Game_CharacterBase
  86. #==============================================================================
  87. class Game_CharacterBase
  88.   attr_accessor :transparent2              # 透明状態  
  89. end

  90. #==============================================================================
  91. # ■ Game_Player
  92. #==============================================================================
  93. class Game_Player < Game_Character
  94.   attr_accessor :keep_passed_region            # リージョンID保存
  95.   #--------------------------------------------------------------------------
  96.   # ● 歩数増加(エイリアス再定義)
  97.   #--------------------------------------------------------------------------
  98.   alias k_transcolor_before_increase_steps increase_steps
  99.   def increase_steps
  100.     refresh_region_tile(@x, @y) unless KURE::RegionSee::NORMAL_MAP.include?($game_map.map_id)
  101.     k_transcolor_before_increase_steps
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 場所移動の実行(エイリアス再定義)
  105.   #--------------------------------------------------------------------------
  106.   alias k_transcolor_before_perform_transfer perform_transfer
  107.   def perform_transfer
  108.     keep_x = @new_x
  109.     keep_y = @new_y
  110.     keep_id = @new_map_id
  111.     keep_trans = 0
  112.     keep_trans = 1 if transfer?
  113.    
  114.     k_transcolor_before_perform_transfer

  115.     if keep_trans == 1
  116.       refresh_region_tile(keep_x, keep_y) unless KURE::RegionSee::NORMAL_MAP.include?(keep_id)
  117.     end
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● タイルの更新(追加定義)
  121.   #--------------------------------------------------------------------------
  122.   def refresh_region_tile(x,y)   
  123.     id = $game_map.region_id(x, y)
  124.    
  125.     if @keep_passed_region != id
  126.       @keep_passed_region = id
  127.       width = $game_map.width
  128.       height = $game_map.height
  129.       
  130.       
  131.       x1 = [0,@x - (KURE::RegionSee::AREA_X / 2).to_i].max
  132.       x2 = [@x + (KURE::RegionSee::AREA_X / 2).to_i,width].min
  133.       y1 = [0,@y - (KURE::RegionSee::AREA_Y / 2).to_i].max
  134.       y2 = [@y + (KURE::RegionSee::AREA_Y / 2).to_i,height].min
  135.       
  136.       rigion_area = Array.new
  137.       #指定リージョンのエリアのみを取得
  138.       for w in x1..x2
  139.         for h in y1..y2
  140.           see = 0
  141.           event = $game_map.events_xy(w,h)
  142.           see = 1 if $game_map.region_id(w, h) == @keep_passed_region
  143.          
  144.           #リージョンの設定
  145.           if KURE::RegionSee::REGION_SEE[@keep_passed_region]
  146.             see = 1 if KURE::RegionSee::REGION_SEE[@keep_passed_region].include?($game_map.region_id(w, h))
  147.           end
  148.          
  149.           #0リージョン上では全てが見える設定の場合
  150.           if @keep_passed_region == 0
  151.             see = 1 if KURE::RegionSee::ZERO_REGION_ACT_MODE == 1
  152.           end
  153.          
  154.           see = 1 if KURE::RegionSee::NORMAL_REGION.include?(@keep_passed_region)
  155.             
  156.           #0リージョンは常に見える設定の場合
  157.           if $game_map.region_id(w, h) == 0
  158.             see = 2 if KURE::RegionSee::ZERO_REGION_SEE_MODE == 1
  159.           end
  160.          
  161.           rigion_area.push([w,h,see]) if see != 0
  162.          
  163.           #一旦タイルイベントを消去
  164.           $game_map.data[w, h, 0] = 0
  165.           $game_map.data[w, h, 1] = 0
  166.           $game_map.data[w, h, 2] = 0
  167.             
  168.           event.each do |ev|
  169.             ev.transparent2 = true
  170.           end
  171.          
  172.         end
  173.       end
  174.       
  175.       #見える範囲を適用する
  176.       rigion_area.each do |area|
  177.         if area[2] == 1
  178.           s_x_area1 = [0,area[0] - 1].max
  179.           s_x_area2 = [width,area[0] + 1].min
  180.           s_y_area1 = [0,area[1] - 1].max
  181.           s_y_area2 = [height,area[1] + 1].min
  182.         
  183.           for sw in s_x_area1..s_x_area2
  184.             for sy in s_y_area1..s_y_area2
  185.               #タイルイベントを復活
  186.               event = $game_map.events_xy(sw,sy)
  187.               $game_map.data[sw, sy, 0] = $game_map.keep_map_data[sw, sy, 0]
  188.               $game_map.data[sw, sy, 1] = $game_map.keep_map_data[sw, sy, 1]
  189.               $game_map.data[sw, sy, 2] = $game_map.keep_map_data[sw, sy, 2]
  190.             
  191.               event.each do |ev|
  192.                   ev.transparent2 = false
  193.               end
  194.               
  195.             end
  196.           end
  197.          
  198.         elsif area[2] == 2
  199.           sw = area[0]
  200.           sy = area[1]
  201.           event = $game_map.events_xy(sw,sy)
  202.           $game_map.data[sw, sy, 0] = $game_map.keep_map_data[sw, sy, 0]
  203.           $game_map.data[sw, sy, 1] = $game_map.keep_map_data[sw, sy, 1]
  204.           $game_map.data[sw, sy, 2] = $game_map.keep_map_data[sw, sy, 2]
  205.             
  206.           event.each do |ev|
  207.             ev.transparent2 = false
  208.           end
  209.         
  210.         end
  211.       end
  212.          
  213.     end
  214.   end
  215.   
  216. end
复制代码

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
140 小时
注册时间
2009-10-28
帖子
103
6
 楼主| 发表于 2014-10-15 13:06:36 | 只看该作者
tseyik 发表于 2014-10-14 20:57
http://blog.livedoor.jp/kuremente-rgssscript/archives/32091238.html

哇哇。。 效果不错  而且 让2 同时可见 2和 1   3 同时可见  1 和 2  和 3   也可以做到  最主要是。。。省事啊。。。。    谢谢@VIPArcher  
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 10:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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